diff --git a/wiki/dev/dicepicker.md b/wiki/dev/dicepicker.md
new file mode 100644
index 0000000..454c39d
--- /dev/null
+++ b/wiki/dev/dicepicker.md
@@ -0,0 +1,37 @@
+# DicePicker (DP)
+The DicePicker is the entry point to any L5R roll (but chat command).
+
+## Usage exemple
+```js
+new game.l5r5e.DicePickerDialog({
+ skillId: 'aesthetics',
+ ringId: 'water',
+ actor: game.user.character
+}).render(true);
+```
+
+## Constructor Options
+| Property | Type | Notes / Exemples |
+|------------------|----------|-------------------------------------------------------------------------------------------------------------------------------|
+| actor | Actor | Any `Actor` object instance.
ex : `game.user.character`, `canvas.tokens.controlled[0].actor` |
+| actorId | string | This is the `id` not the `uuid` of an actor.
ex : "AbYgKrNwWeAxa9jT" |
+| actorName | string | Careful this is case sensitive.
ex : "Isawa Aki" |
+| difficulty | number | `1` to `9` |
+| difficultyHidden | boolean | If `true`, hide the difficulty and lock the view for the player. |
+| isInitiativeRoll | boolean | `true` if this is an initiative roll |
+| itemUuid | string | The `uuid` of technique or weapon used for this roll. Can be anything retrieved by `fromUuid()` or `fromUuidSync()` |
+| ringId | string | If not provided, take the current stance of the actor if any.
ex : "fire", "water" |
+| skillId | string | Skill `id`
ex : "design", "aesthetics", "courtesy" |
+| skillCatId | string | Skill category `id`
ex : "artisan", "scholar" |
+| skillsList | string[] | `skillId`/`skillCatId` list coma separated.
Allow the player to select the skill used in a select
ex : "artisan,design" |
+
+
+All these properties are optional.
+
+For `actor*` properties, the resolution is in this order :
+1. `option.actor`
+2. `option.actorId`
+3. `option.actorName`
+4. Try to find the first controlled token by the player (`canvas.tokens.controlled[0]?.actor`)
+5. Use the assigned character if any (`game.user.character`)
+6. If nothing found, then no actor are set
diff --git a/wiki/dev/rnk.md b/wiki/dev/rnk.md
new file mode 100644
index 0000000..dc98321
--- /dev/null
+++ b/wiki/dev/rnk.md
@@ -0,0 +1,9 @@
+# Roll n Keep (RnK)
+The RnK use `ChatMessage` to retrieve the roll, alter it, add the new message and delete the old.
+
+> If you have any idea how to modify directly the ChatMessage and update it, let me know.
+
+Usage :
+```js
+new RollnKeepDialog(messageId).render(true);
+```
diff --git a/wiki/dev/roll.md b/wiki/dev/roll.md
new file mode 100644
index 0000000..d0554c2
--- /dev/null
+++ b/wiki/dev/roll.md
@@ -0,0 +1,34 @@
+# Roll
+The roll use the `RollL5r5e` class, who store a lot of additional variables.
+
+Here is a view of `.l5r5e` properties :
+```js
+actor: null, // actor instance
+dicesTypes: {
+ std: false, // true if have a standard roll (ex : 1d6)
+ l5r: false, // true if have a l5r roll (we need the RnK)
+},
+difficulty: 2,
+difficultyHidden: false,
+history: null, // Stored data of the RnK, can be big
+initialFormula: null, // The initial formula use in DP
+itemUuid: null, // technique or weapon uuid
+isInitiativeRoll: false,
+keepLimit: null, // Max number of dice to keep
+rnkEnded: false, // false if the player can modify the roll.
+skillAssistance: 0, // Number of skill assistance, needed to know the number of dice keept
+skillCatId: "", // Skill category id
+skillId: "", // Skill id
+stance: "", // Ring id (fire, void...)
+strifeApplied: 0, // how many strife point the linked actor have already taken
+summary: {
+ totalSuccess: 0, // = success + explosive
+ totalBonus: 0, // = totalSuccess - difficulty
+ success: 0,
+ explosive: 0,
+ opportunity: 0,
+ strife: 0,
+},
+targetInfos: null, // "img" and "name" of the target if any
+voidPointUsed: false, // if a void point as been used for this roll
+```
diff --git a/wiki/dev/sockets.md b/wiki/dev/sockets.md
new file mode 100644
index 0000000..8c51691
--- /dev/null
+++ b/wiki/dev/sockets.md
@@ -0,0 +1,94 @@
+# Sockets API
+Here is the list of Socket's methods, most of them is design to be use internally by the system, but you can find some useful for your projects.
+
+
+## deleteChatMessage
+Delete ChatMessage by his `id`, the GM permission is required, so a GM need to be connected for this to work. Used in RnK.
+
+Usage :
+```js
+game.l5r5e.sockets.deleteChatMessage(messageId);
+```
+
+
+## refreshAppId
+Refresh a application windows by it's `htmlId` (not `windowsId`). Used in RnK.
+
Ex : `l5r5e-twenty-questions-dialog-kZHczAFghMNYFRWe`, not `65`.
+
+Usage :
+```js
+game.l5r5e.sockets.refreshAppId(applicationId);
+```
+
+
+## updateMessageIdAndRefresh
+Change the message in the selected application windows, and rerender the application to force the refresh. Used in RnK.
+
+Usage :
+```js
+game.l5r5e.sockets.refreshAppId(applicationId, messageId);
+```
+
+
+## openDicePicker
+Remotely open the DicePicker (DP) on targetted Users/Actors if they are active users. Used in initiative roll.
+
+Arguments :
+
+| Property | Type | Notes / Exemples |
+|-----------|---------|----------------------------------------------------------------------------|
+| users | User[] | Users list to trigger the DP (will be reduce to `id` for network perf.) |
+| actors | Actor[] | Actors list to trigger the DP (will be reduce to `uuid` for network perf.) |
+| dpOptions | Object | Any [DicePickerDialog.options](dicepicker.md#constructor-options) |
+
+
+### Exemples
+
+#### Fitness skill roll for the all combat targets
+```js
+game.l5r5e.sockets.openDicePicker({
+ actors: Array.from(game.user.targets).map(t => t.document.actor),
+ dpOptions: {
+ skillId: 'fitness',
+ difficulty: 3,
+ }
+});
+```
+
+#### Initiative roll (skirmish) for all player's character who are in combat tracker
+```js
+game.l5r5e.sockets.openDicePicker({
+ actors: game.combat.combatants.filter(c => c.hasPlayerOwner && !c.isDefeated && !c.initiative).map(c => c.actor),
+ dpOptions: {
+ skillId: 'tactics',
+ difficulty: 1,
+ isInitiativeRoll: true,
+ }
+});
+```
+
+#### Melee skill roll with "fire" ring, pre-selected for all the selected tokens
+```js
+game.l5r5e.sockets.openDicePicker({
+ actors: canvas.tokens.controlled.map(t => t.actor),
+ dpOptions: {
+ ringId: 'fire',
+ skillId: 'melee',
+ difficulty: 2,
+ }
+});
+```
+
+#### Skill roll with skill list for all active players (but GM)
+```js
+game.l5r5e.sockets.openDicePicker({
+ users: game.users.players.filter(u => u.active && u.hasPlayerOwner),
+ dpOptions: {
+ ringId: 'water',
+ skillId: 'unarmed',
+ skillsList: 'melee,ranged,unarmed',
+ difficulty: 3,
+ difficultyHidden: true,
+ }
+});
+```
diff --git a/wiki/dev/system-helping.md b/wiki/dev/system-helping.md
new file mode 100644
index 0000000..b7560a1
--- /dev/null
+++ b/wiki/dev/system-helping.md
@@ -0,0 +1,21 @@
+# System helping (Contribute)
+## Rules
+You are free to contribute and propose corrections, modifications after fork. Try to respect theses rules:
+- Make sure you are up-to-date with the referent branch (most of the time the `dev` branch).
+- Clear and precise commit messages allow a quick review of the code.
+- If possible, limit yourself to one Feature per Merge request so as not to block the process.
+
+
+## Dev install
+1. Clone the repository.
+2. Use `npm ci` to install the dependence.
+3. Create a link from `/system` to your foundry system data (by default `%localappdata%/FoundryVTT/data/systems/l5r5e`).
+
+Windows exemple (modify the target and source directories, and run this in administrator) :
+```bash
+mklink /D /J "%localappdata%/FoundryVTT/data/systems/l5r5e" "D:/Projects/FVTT/l5r5e/system"
+```
+
+
+## Compiling SCSS
+1. Run `npm watch` to watch and compile the `scss` files.
diff --git a/wiki/index.md b/wiki/index.md
new file mode 100644
index 0000000..e2e23fe
--- /dev/null
+++ b/wiki/index.md
@@ -0,0 +1,17 @@
+# L5R5e System Wiki
+
+## For users
+- [Installation and modules](users/install.md)
+- [Updating - Bests practices](users/updating.md)
+- [Basic usage and filling sheets](users/basic-usage.md)
+- [Dice Rolling](users/dice.md)
+- [Symbols replacement list](users/symbols.md)
+- [Advanced : Techniques skill and difficulty syntaxe](users/techniques-syntaxe.md)
+- [Advanced : Custom Compendiums](users/custom-compendiums.md)
+
+## For developers
+- [System helping (Contribute)](dev/system-helping.md)
+- [Sockets API](dev/sockets.md)
+- [DicePicker (DP)](dev/dicepicker.md)
+- [Roll n Keep (RnK)](dev/rnk.md)
+- [Roll](dev/roll.md)
diff --git a/wiki/users/basic-usage.md b/wiki/users/basic-usage.md
new file mode 100644
index 0000000..946c10c
--- /dev/null
+++ b/wiki/users/basic-usage.md
@@ -0,0 +1,7 @@
+# Basic usage and filling sheets
+Mostly all the interactions are done with drag-n-drop.
+
+## Creating a Character (PC)
+Go in actor tab, and create a new `character`.
+
+> TODO
diff --git a/wiki/users/custom-compendiums.md b/wiki/users/custom-compendiums.md
new file mode 100644
index 0000000..ccdbd43
--- /dev/null
+++ b/wiki/users/custom-compendiums.md
@@ -0,0 +1,10 @@
+# Custom Compendiums
+Never directly edit the system compendiums.
+They will be erased anytime you update the system.
+
+The better options to keep the links between items and properties for exemple, is to fill a custom compendium using babel.
+This way, the system compendiums will be overridden by this module.
+
+You will need to manually download the following module, and edit json files.
+Please follow the instructions on :
+> https://gitlab.com/teaml5r/l5r5e-custom-compendiums
diff --git a/wiki/users/dice.md b/wiki/users/dice.md
new file mode 100644
index 0000000..6af12f8
--- /dev/null
+++ b/wiki/users/dice.md
@@ -0,0 +1,3 @@
+# Dice Rolling
+
+> TODO
diff --git a/wiki/users/img/symbols.png b/wiki/users/img/symbols.png
new file mode 100644
index 0000000..51585f0
Binary files /dev/null and b/wiki/users/img/symbols.png differ
diff --git a/wiki/users/install.md b/wiki/users/install.md
new file mode 100644
index 0000000..c2bf126
--- /dev/null
+++ b/wiki/users/install.md
@@ -0,0 +1,52 @@
+# Installation
+
+## System Installation
+### With Search (recommended)
+1. Open FoundryVTT.
+2. In the `Game Systems` tab, clic `Install system`.
+3. Search `L5R`, on the line `Legend of the Five Rings (5th Edition)`, clic `Install`.
+
+### With the manifest
+1. Open FoundryVTT.
+2. In the `Game Systems` tab, clic `Install system`.
+3. Copy this link and use it in the `Manifest URL`, then clic `Install`.
+> https://gitlab.com/teaml5r/l5r5e/-/raw/master/system/system.json
+
+
+## Modules
+L5R do not required a lot of module, i highly encourage you to start with a small number of it.
+
+Some modules require others library/module, you need to install them to allow the primary module work.
+Nothing fancy, just accept when FoundryVTT prompt you to download or activate the dependencies.
+
+
+### Some recommended modules
+| Module name | Notes |
+|------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Babele](https://foundryvtt.com/packages/babele) | Required for non english compendium translation |
+| [Permission Viewer](https://foundryvtt.com/packages/permission_viewer) | Lets you see instantly who has permissions to see what item |
+| [Dice So Nice!](https://foundryvtt.com/packages/dice-so-nice) | Add 3D dices that bounce on the screen when you roll dice |
+| [Small Legend of the 5 Rings Tools](https://foundryvtt.com/packages/l5r-dragruler) | Series of tools for L5R |
+| [Search Anywhere](https://foundryvtt.com/packages/searchanywhere) | Don't spent too much time searching the right technique |
+| [FXMaster](https://foundryvtt.com/packages/fxmaster) | More effects |
+| [Scene Clicker](https://foundryvtt.com/packages/scene-clicker) | Clicking on a Scene or a Scene Link will now "view" the Scene instead of rendering the Scene Config Sheet |
+| [Universal Battlemap Importer](https://foundryvtt.com/packages/dd-import) | Allows Importing [DungeonDraft](https://dungeondraft.net/), [DungeonFog](https://www.dungeonfog.com/) or [Arkenforge](https://arkenforge.com/) export files into FoundryVTT |
+| [Compendium Folders](https://foundryvtt.com/packages/compendium-folders) | Add folders to compendiums |
+| [Chat Images](https://foundryvtt.com/packages/chat-images) | Lets you drag images into the chat, one of the quicker ways to do 'he looks like this' |
+| [Combat Utility Belt](https://foundryvtt.com/packages/combat-utility-belt) | A totally over-engineered but helpful app that will, among other things, let you set up custom statuses |
+| [Timer](https://foundryvtt.com/packages/timer) | A simple timer, useful to stress a little your players |
+
+
+### Map module
+The official 5e Rokugan map is publish under the module section in FoundryVTT.
+- [L5R5e - Rokugan map for Legend of the Five Rings (5th edition)](https://foundryvtt.com/packages/l5r5e-map)
+
+
+## Worlds
+We have published the official free content in form of worlds ready to play :
+- [L5R5E - Cresting Waves](https://foundryvtt.com/packages/l5r5e-world-waves)
+- [L5R5E - In the Palace of the Emerald Champion](https://foundryvtt.com/packages/l5r5e-world-palace)
+- [L5R5E - The Highwayman](https://foundryvtt.com/packages/l5r5e-world-highwayman)
+- [L5R5E - The Scroll or the Blade](https://foundryvtt.com/packages/l5r5e-world-scroll)
+- [L5R5E - The Knotted Tails](https://foundryvtt.com/packages/l5r5e-world-tails)
+- [L5R5E - Wedding at Kyotei castle](https://foundryvtt.com/packages/l5r_mariage)
diff --git a/wiki/users/symbols.md b/wiki/users/symbols.md
new file mode 100644
index 0000000..9d95984
--- /dev/null
+++ b/wiki/users/symbols.md
@@ -0,0 +1,13 @@
+# Symbols replacement list
+In sheets or journals, you can use these tags to use symbols :
+```
+Dice symbols : (op) (su) (ex) (st) (skill) (ring)
+Rings : (earth) (water) (fire) (air) (void)
+Tech: (kiho) (maho) (ninjutsu) (ritual) (shuji) (invocation) (kata) (prereq) (inversion) (mantra)
+Clans: (imperial) (crab) (crane) (dragon) (lion) (mantis) (phoenix) (scorpion) (tortoise) (unicorn) (ronin)
+Others : (courtier) (bushi) (shugenja)
+```
+
+Result :
+
+
diff --git a/wiki/users/techniques-syntaxe.md b/wiki/users/techniques-syntaxe.md
new file mode 100644
index 0000000..fa1f783
--- /dev/null
+++ b/wiki/users/techniques-syntaxe.md
@@ -0,0 +1,30 @@
+# Techniques skill and difficulty syntaxe
+On the Technique sheets, you will find two fields `Difficulty` and `Skill`.
+
+These fields have special constraints, you will find theirs rules below.
+
+## Difficulty
+Can be :
+ - A integer number : `1` to `9`.
+ - Or specific syntaxe "@`S`:`prop1`" or "@`T`:`prop1`|`max`" or "@`T`:`prop1`|`max`(`prop2`)" :
+ - `@` fixed, trigger the parser
+ - `T` or `S` : `T`arget or `S`elf, define the actor to get the value.
+ - `prop1` / `prop2` : Can be any property in `actor` or `actor.system`. Limitations: currently no `size`, `distance` (range) or computation (a+b).
+ - `|` separator, optional if no min/max.
+ - `min` or `max` : Between the selected targets, search for the min/max of `prop2`. If no `prop2` provided, take `prop1` as `prop2` (irrelevant for `@S`).
+ - `(prop2)` : define the property for the actor selection in multiple target, can be omitted if same as `prop1`.
+ - Exemples :
+ - `@S:vigilance` : Difficulty will be my own `vigilance`.
+ - `@T:vigilance|min` : Difficulty will be the `vigilance` from the target with the minimum vigilance (implicit) value. it's the same to wrote `@T:vigilance|min(vigilance)`.
+ - `@T:vigilance|max(statusRank)` : Difficulty will be the `vigilance` from the target with the maximum `statusRank` value.
+
+
+## Skill
+Can be :
+ - Any `Skill` id : `melee`, `fitness`...
+ - Any `SkillCategory` id : `scholar`, `martial`...
+ - Or both in list, coma separated.
+ - Exemples :
+ - `theology`
+ - `melee,ranged,unarmed`
+ - `martial,fitness,performance`
diff --git a/wiki/users/updating.md b/wiki/users/updating.md
new file mode 100644
index 0000000..1708ce8
--- /dev/null
+++ b/wiki/users/updating.md
@@ -0,0 +1,4 @@
+# Updating - Bests practices
+
+- Anytime you update to a major version make a backup of foundry's data directory (default : `%localappdata%/FoundryVTT/data/`).
+- Take time to upgrading to a major version (ex FoundryVTT v9->v10).
A lot of bugs can be on firsts patchs, and a lots of systems/modules won't upgrade fast and will be incompatible or not tested (a lot of us do it only on our free time).
If you need some timing windows: let à least 2 weeks to 1 month.