openryoko 2026.8.21 → 2026.8.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 (164) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/cli/initial-config.d.ts +13 -0
  3. package/dist/src/cli/initial-config.d.ts.map +1 -0
  4. package/dist/src/cli/initial-config.js +39 -0
  5. package/dist/src/cli/initial-config.js.map +1 -0
  6. package/dist/src/cli/setup.d.ts.map +1 -1
  7. package/dist/src/cli/setup.js +4 -47
  8. package/dist/src/cli/setup.js.map +1 -1
  9. package/dist/src/cli/skills.d.ts +6 -0
  10. package/dist/src/cli/skills.d.ts.map +1 -1
  11. package/dist/src/cli/skills.js +96 -30
  12. package/dist/src/cli/skills.js.map +1 -1
  13. package/dist/src/gateway/api.d.ts.map +1 -1
  14. package/dist/src/gateway/api.js +36 -35
  15. package/dist/src/gateway/api.js.map +1 -1
  16. package/dist/src/gateway/onboarding-personalize.d.ts +15 -0
  17. package/dist/src/gateway/onboarding-personalize.d.ts.map +1 -0
  18. package/dist/src/gateway/onboarding-personalize.js +31 -0
  19. package/dist/src/gateway/onboarding-personalize.js.map +1 -0
  20. package/dist/src/gateway/portal-config.d.ts +14 -0
  21. package/dist/src/gateway/portal-config.d.ts.map +1 -0
  22. package/dist/src/gateway/portal-config.js +47 -0
  23. package/dist/src/gateway/portal-config.js.map +1 -0
  24. package/dist/src/sessions/context.d.ts +1 -0
  25. package/dist/src/sessions/context.d.ts.map +1 -1
  26. package/dist/src/sessions/context.js +44 -28
  27. package/dist/src/sessions/context.js.map +1 -1
  28. package/dist/src/shared/paths.d.ts +2 -0
  29. package/dist/src/shared/paths.d.ts.map +1 -1
  30. package/dist/src/shared/paths.js +9 -1
  31. package/dist/src/shared/paths.js.map +1 -1
  32. package/dist/web/404.html +1 -1
  33. package/dist/web/__next.__PAGE__.txt +1 -1
  34. package/dist/web/__next._full.txt +1 -1
  35. package/dist/web/__next._tree.txt +1 -1
  36. package/dist/web/_next/static/chunks/{0y5p4spyfs35l.js → 302onz3a3kflv.js} +1 -1
  37. package/dist/web/_not-found/__next._full.txt +1 -1
  38. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
  39. package/dist/web/_not-found/__next._tree.txt +1 -1
  40. package/dist/web/_not-found.html +1 -1
  41. package/dist/web/_not-found.txt +1 -1
  42. package/dist/web/chat/__next._full.txt +2 -2
  43. package/dist/web/chat/__next._tree.txt +1 -1
  44. package/dist/web/chat/__next.chat.__PAGE__.txt +2 -2
  45. package/dist/web/chat.html +1 -1
  46. package/dist/web/chat.txt +2 -2
  47. package/dist/web/cron/__next._full.txt +1 -1
  48. package/dist/web/cron/__next._tree.txt +1 -1
  49. package/dist/web/cron/__next.cron.__PAGE__.txt +1 -1
  50. package/dist/web/cron.html +1 -1
  51. package/dist/web/cron.txt +1 -1
  52. package/dist/web/index.html +1 -1
  53. package/dist/web/index.txt +1 -1
  54. package/dist/web/kanban/__next._full.txt +1 -1
  55. package/dist/web/kanban/__next._tree.txt +1 -1
  56. package/dist/web/kanban/__next.kanban.__PAGE__.txt +1 -1
  57. package/dist/web/kanban.html +1 -1
  58. package/dist/web/kanban.txt +1 -1
  59. package/dist/web/logs/__next._full.txt +1 -1
  60. package/dist/web/logs/__next._tree.txt +1 -1
  61. package/dist/web/logs/__next.logs.__PAGE__.txt +1 -1
  62. package/dist/web/logs.html +1 -1
  63. package/dist/web/logs.txt +1 -1
  64. package/dist/web/org/__next._full.txt +1 -1
  65. package/dist/web/org/__next._tree.txt +1 -1
  66. package/dist/web/org/__next.org.__PAGE__.txt +1 -1
  67. package/dist/web/org.html +1 -1
  68. package/dist/web/org.txt +1 -1
  69. package/dist/web/sessions/__next._full.txt +1 -1
  70. package/dist/web/sessions/__next._tree.txt +1 -1
  71. package/dist/web/sessions/__next.sessions.__PAGE__.txt +1 -1
  72. package/dist/web/sessions.html +1 -1
  73. package/dist/web/sessions.txt +1 -1
  74. package/dist/web/settings/__next._full.txt +1 -1
  75. package/dist/web/settings/__next._tree.txt +1 -1
  76. package/dist/web/settings/__next.settings.__PAGE__.txt +1 -1
  77. package/dist/web/settings.html +1 -1
  78. package/dist/web/settings.txt +1 -1
  79. package/dist/web/skills/__next._full.txt +1 -1
  80. package/dist/web/skills/__next._tree.txt +1 -1
  81. package/dist/web/skills/__next.skills.__PAGE__.txt +1 -1
  82. package/dist/web/skills.html +1 -1
  83. package/dist/web/skills.txt +1 -1
  84. package/package.json +2 -2
  85. package/template/BOOTSTRAP.md +5 -3
  86. package/template/config.default.yaml +4 -4
  87. package/template/docs/architecture.md +2 -2
  88. package/template/docs/cron.md +5 -3
  89. package/template/docs/mcp.md +1 -1
  90. package/template/docs/org.md +17 -11
  91. package/template/docs/overview.md +4 -3
  92. package/template/docs/self-modification.md +7 -7
  93. package/template/docs/skills.md +11 -8
  94. package/template/skills/cron-manager/SKILL.md +7 -7
  95. package/template/skills/management/SKILL.md +1 -1
  96. package/template/skills/self-heal/SKILL.md +7 -7
  97. package/template/skills/skill-creator/SKILL.md +9 -9
  98. package/dist/web/__next._head.txt +0 -6
  99. package/dist/web/__next._index.txt +0 -6
  100. package/dist/web/_next/static/chunks/012aakl34ff5a.js +0 -5
  101. package/dist/web/_next/static/chunks/03~yq9q893hmn.js +0 -1
  102. package/dist/web/_next/static/chunks/0a2uy1kw.~j~c.js +0 -1
  103. package/dist/web/_next/static/chunks/0agxgztb0b~.7.js +0 -5
  104. package/dist/web/_next/static/chunks/0dtbl8648b3u9.js +0 -7
  105. package/dist/web/_next/static/chunks/0e3pdjkorr5zl.js +0 -2
  106. package/dist/web/_next/static/chunks/0ewpxy-mzj3j3.js +0 -1
  107. package/dist/web/_next/static/chunks/0g6xt.91k~0bc.js +0 -5
  108. package/dist/web/_next/static/chunks/0jm3e~uc~qd~p.js +0 -79
  109. package/dist/web/_next/static/chunks/0jzw1gpuag8bc.js +0 -5
  110. package/dist/web/_next/static/chunks/0lkp92-ovteta.js +0 -5
  111. package/dist/web/_next/static/chunks/0lt7kv1k1jla0.js +0 -1
  112. package/dist/web/_next/static/chunks/0msmlzd_~uk0y.js +0 -5
  113. package/dist/web/_next/static/chunks/0ru56x83x4rkk.js +0 -1
  114. package/dist/web/_next/static/chunks/0tcvgwr3rcw29.js +0 -1
  115. package/dist/web/_next/static/chunks/0tf9kpygstdls.js +0 -1
  116. package/dist/web/_next/static/chunks/0y3dnnq~kxyz_.js +0 -1
  117. package/dist/web/_next/static/chunks/0~6m1p5hnsx2f.js +0 -1
  118. package/dist/web/_next/static/chunks/10-liamt-ipcu.js +0 -1
  119. package/dist/web/_next/static/chunks/103zsy0q9psfj.css +0 -1
  120. package/dist/web/_next/static/chunks/10l08hq.acixl.js +0 -5
  121. package/dist/web/_next/static/chunks/11rbefjn.e-3-.js +0 -1
  122. package/dist/web/_next/static/chunks/11rodb4s1x4of.js +0 -1
  123. package/dist/web/_next/static/chunks/12_uxtnrqhoo1.js +0 -1
  124. package/dist/web/_next/static/chunks/12m97bwrg1tuu.js +0 -5
  125. package/dist/web/_next/static/chunks/13juizw904g.e.js +0 -1
  126. package/dist/web/_next/static/chunks/14ge_q22f0n.f.js +0 -1
  127. package/dist/web/_next/static/chunks/17-u9c_weg12-.js +0 -31
  128. package/dist/web/_next/static/chunks/17oc2l.ekcs8b.css +0 -1
  129. package/dist/web/_next/static/chunks/turbopack-0dt987bw_1nyf.js +0 -1
  130. package/dist/web/_next/static/media/apple-icon.0.wpl4.d-5bkf.jpg +0 -0
  131. package/dist/web/_next/static/media/icon.0.wpl4.d-5bkf.jpg +0 -0
  132. package/dist/web/_next/static/qeykWjfc1T7SjJSULdD7s/_buildManifest.js +0 -11
  133. package/dist/web/_next/static/qeykWjfc1T7SjJSULdD7s/_clientMiddlewareManifest.js +0 -1
  134. package/dist/web/_next/static/qeykWjfc1T7SjJSULdD7s/_ssgManifest.js +0 -1
  135. package/dist/web/_not-found/__next._head.txt +0 -6
  136. package/dist/web/_not-found/__next._index.txt +0 -6
  137. package/dist/web/_not-found/__next._not-found.txt +0 -5
  138. package/dist/web/chat/__next._head.txt +0 -6
  139. package/dist/web/chat/__next._index.txt +0 -6
  140. package/dist/web/chat/__next.chat.txt +0 -5
  141. package/dist/web/cron/__next._head.txt +0 -6
  142. package/dist/web/cron/__next._index.txt +0 -6
  143. package/dist/web/cron/__next.cron.txt +0 -5
  144. package/dist/web/kanban/__next._head.txt +0 -6
  145. package/dist/web/kanban/__next._index.txt +0 -6
  146. package/dist/web/kanban/__next.kanban.txt +0 -5
  147. package/dist/web/logs/__next._head.txt +0 -6
  148. package/dist/web/logs/__next._index.txt +0 -6
  149. package/dist/web/logs/__next.logs.txt +0 -5
  150. package/dist/web/org/__next._head.txt +0 -6
  151. package/dist/web/org/__next._index.txt +0 -6
  152. package/dist/web/org/__next.org.txt +0 -5
  153. package/dist/web/sessions/__next._head.txt +0 -6
  154. package/dist/web/sessions/__next._index.txt +0 -6
  155. package/dist/web/sessions/__next.sessions.txt +0 -5
  156. package/dist/web/settings/__next._head.txt +0 -6
  157. package/dist/web/settings/__next._index.txt +0 -6
  158. package/dist/web/settings/__next.settings.txt +0 -5
  159. package/dist/web/skills/__next._head.txt +0 -6
  160. package/dist/web/skills/__next._index.txt +0 -6
  161. package/dist/web/skills/__next.skills.txt +0 -5
  162. /package/dist/web/_next/static/{UDwWEfKiZ-eIOpfOIPKQr → Da2BlMpDPFofGxzd6GngP}/_buildManifest.js +0 -0
  163. /package/dist/web/_next/static/{UDwWEfKiZ-eIOpfOIPKQr → Da2BlMpDPFofGxzd6GngP}/_clientMiddlewareManifest.js +0 -0
  164. /package/dist/web/_next/static/{UDwWEfKiZ-eIOpfOIPKQr → Da2BlMpDPFofGxzd6GngP}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Employee Personas
6
6
 
7
- Employee files live at `~/.jinn/org/<department>/<name>.yaml`.
7
+ Employee files live at `~/.ryoko/org/<department>/<name>.yaml`.
8
8
 
9
9
  ```yaml
10
10
  name: alice
@@ -33,10 +33,10 @@ persona: |
33
33
 
34
34
  ## Departments
35
35
 
36
- Each department is a directory under `~/.jinn/org/` containing:
36
+ Each department is a directory under `~/.ryoko/org/` containing:
37
37
 
38
38
  ```
39
- ~/.jinn/org/engineering/
39
+ ~/.ryoko/org/engineering/
40
40
  department.yaml # Department metadata
41
41
  board.json # Shared task board
42
42
  alice.yaml # Employee persona
@@ -90,16 +90,22 @@ Task fields: `id`, `title`, `assignee`, `status` (open, in-progress, done, block
90
90
 
91
91
  ## Default Organization
92
92
 
93
- {{portalName}} ships with a single executive employee:
93
+ `org/` starts empty. {{portalName}} itself is the executive (COO) and is not
94
+ defined as an org employee — employees are the workers {{portalName}} delegates to.
95
+
96
+ The onboarding skill proposes a starter scaffold matched to the user's profile
97
+ (e.g. an `engineering/` department with a `dev-assistant` employee for a solo
98
+ developer), and the management skill handles hiring from there. An employee
99
+ file looks like:
94
100
 
95
101
  ```yaml
96
- name: {{portalSlug}}
97
- displayName: {{portalName}}
98
- department: executive
99
- rank: executive
102
+ name: dev-assistant
103
+ displayName: Dev Assistant
104
+ department: engineering
105
+ rank: employee
100
106
  engine: claude
101
- model: opus
107
+ model: claude-opus-5
102
108
  persona: |
103
- You are {{portalName}}, the executive AI assistant and gateway administrator.
104
- You manage the organization, delegate tasks, and handle direct requests.
109
+ You are a careful software engineer. You implement tasks assigned by
110
+ {{portalName}}, report progress on the board, and escalate blockers.
105
111
  ```
@@ -1,6 +1,6 @@
1
1
  # {{portalName}} Overview
2
2
 
3
- {{portalName}} is a lightweight AI gateway daemon that wraps professional AI CLI tools as "engines." It is published as `jinn-cli`.
3
+ {{portalName}} is a lightweight AI gateway daemon that wraps professional AI CLI tools as "engines." It is published as `openryoko`.
4
4
 
5
5
  ## Core Principle
6
6
 
@@ -22,9 +22,10 @@ Traditional approaches build custom tool-calling loops, manage context windows,
22
22
  ## Directory Structure
23
23
 
24
24
  ```
25
- ~/.jinn/
25
+ ~/.ryoko/
26
26
  config.yaml # Gateway configuration
27
- jinn.db # SQLite session registry
27
+ sessions/
28
+ registry.db # SQLite session registry
28
29
  docs/ # These reference docs
29
30
  skills/ # Skill directories with SKILL.md files
30
31
  cron/
@@ -1,6 +1,6 @@
1
1
  # Self-Modification
2
2
 
3
- {{portalName}}'s engines operate within `~/.jinn/` and can modify any file in that directory. This enables {{portalName}} to update its own configuration, create skills, manage cron jobs, and restructure the organization at runtime.
3
+ {{portalName}}'s engines operate within `~/.ryoko/` and can modify any file in that directory. This enables {{portalName}} to update its own configuration, create skills, manage cron jobs, and restructure the organization at runtime.
4
4
 
5
5
  ## What {{portalName}} Can Edit
6
6
 
@@ -25,7 +25,7 @@ Changes take effect immediately. No restart required.
25
25
 
26
26
  ## Safety Guidelines
27
27
 
28
- Engines have full file access within `~/.jinn/`. To avoid breaking the gateway:
28
+ Engines have full file access within `~/.ryoko/`. To avoid breaking the gateway:
29
29
 
30
30
  ### Do
31
31
 
@@ -38,28 +38,28 @@ Engines have full file access within `~/.jinn/`. To avoid breaking the gateway:
38
38
  ### Do Not
39
39
 
40
40
  - Break `config.yaml` structure — invalid YAML will prevent config reload
41
- - Corrupt `jinn.db` — the SQLite database is managed by the gateway process
41
+ - Corrupt `sessions/registry.db` — the SQLite database is managed by the gateway process
42
42
  - Write invalid JSON to `jobs.json` — this will cancel all cron jobs with nothing to replace them
43
43
  - Delete the `docs/` directory — these reference docs are needed for self-awareness
44
- - Modify files outside `~/.jinn/` unless explicitly instructed by the user
44
+ - Modify files outside `~/.ryoko/` unless explicitly instructed by the user
45
45
 
46
46
  ## Example: Creating a Cron Job at Runtime
47
47
 
48
48
  An engine can create a new cron job by reading `cron/jobs.json`, appending a new entry, and writing it back:
49
49
 
50
50
  ```
51
- 1. Read ~/.jinn/cron/jobs.json
51
+ 1. Read ~/.ryoko/cron/jobs.json
52
52
  2. Parse the JSON array
53
53
  3. Append new job object with unique id, schedule, prompt, etc.
54
54
  4. Validate the full array
55
- 5. Write back to ~/.jinn/cron/jobs.json
55
+ 5. Write back to ~/.ryoko/cron/jobs.json
56
56
  6. The file watcher automatically reschedules all jobs
57
57
  ```
58
58
 
59
59
  ## Example: Adding a New Employee
60
60
 
61
61
  ```
62
- 1. Create ~/.jinn/org/<department>/<name>.yaml with required fields
62
+ 1. Create ~/.ryoko/org/<department>/<name>.yaml with required fields
63
63
  2. The file watcher detects the new file and rebuilds the employee registry
64
64
  3. The new employee is immediately available for @mention routing
65
65
  ```
@@ -4,7 +4,7 @@ Skills are markdown instruction sets that engines read and follow. There is no r
4
4
 
5
5
  ## How Skills Work
6
6
 
7
- Each skill is a directory in `~/.jinn/skills/` containing at minimum a `SKILL.md` file. When an engine starts a session, it has access to the skills directory and can read any skill's instructions.
7
+ Each skill is a directory in `~/.ryoko/skills/` containing at minimum a `SKILL.md` file. When an engine starts a session, it has access to the skills directory and can read any skill's instructions.
8
8
 
9
9
  The `SKILL.md` file contains:
10
10
  - **Trigger description**: When this skill should be activated
@@ -14,7 +14,7 @@ The `SKILL.md` file contains:
14
14
  ## Creating a Skill
15
15
 
16
16
  ```
17
- ~/.jinn/skills/
17
+ ~/.ryoko/skills/
18
18
  my-skill/
19
19
  SKILL.md # Required: instructions
20
20
  data.json # Optional: supporting data
@@ -41,13 +41,16 @@ When the user says "deploy" or asks about deployment status.
41
41
 
42
42
  ## Pre-packaged Skills
43
43
 
44
- {{portalName}} ships with several default skills:
44
+ {{portalName}} ships with these default skills (see `~/.ryoko/skills/`):
45
45
 
46
- - **self**: Instructions for {{portalName}} to understand and modify its own configuration
47
- - **slack**: Slack-specific behavior and formatting guidelines
48
- - **cron**: How to create and manage scheduled jobs
49
- - **org**: Working with the organization structure and employee personas
50
- - **skills**: Meta-skill for creating and managing other skills
46
+ - **onboarding**: First-run setup — fills IDENTITY.md / SOUL.md / MEMORY.md interactively
47
+ - **management**: Hiring, firing, promotions, delegation, and board reviews for the org
48
+ - **cron-manager**: Create, edit, enable/disable, and troubleshoot cron jobs
49
+ - **skill-creator**: Write a SKILL.md playbook to create a new skill
50
+ - **find-and-install**: Discover skills via `npx skills find` and install them
51
+ - **self-heal**: Diagnose and repair {{portalName}}'s own configuration and runtime
52
+ - **migrate**: Apply pending version migrations
53
+ - **sync** / **new** / **status**: Slash-command playbooks (`/sync`, `/new`, `/status`)
51
54
 
52
55
  ## Key Points
53
56
 
@@ -11,7 +11,7 @@ This skill activates when the user wants to create, edit, delete, enable, disabl
11
11
 
12
12
  ## Data File
13
13
 
14
- All cron jobs are stored in `~/.jinn/cron/jobs.json` as a JSON array of job objects. If the file does not exist, create it with an empty array `[]`.
14
+ All cron jobs are stored in `cron/jobs.json` (relative to the {{portalName}} home directory, which is always your working directory) as a JSON array of job objects. If the file does not exist, create it with an empty array `[]`.
15
15
 
16
16
  ## CronJob Schema
17
17
 
@@ -51,7 +51,7 @@ Field details:
51
51
 
52
52
  ### Creating a Job
53
53
 
54
- 1. Read the current `~/.jinn/cron/jobs.json` (or initialize as `[]` if missing).
54
+ 1. Read the current `cron/jobs.json` (or initialize as `[]` if missing).
55
55
  2. Ask the user for the required fields: name, schedule, engine, model, and prompt.
56
56
  3. Ask about the timezone. Default to `UTC` if not specified.
57
57
  4. Ask about the employee persona to use. This is optional.
@@ -60,12 +60,12 @@ Field details:
60
60
  7. Generate a UUID for the `id` field.
61
61
  8. Set `enabled` to `true` by default.
62
62
  9. Append the new job object to the array.
63
- 10. Write the updated array back to `~/.jinn/cron/jobs.json`.
63
+ 10. Write the updated array back to `cron/jobs.json`.
64
64
  11. Confirm the creation and summarize the schedule in plain English.
65
65
 
66
66
  ### Editing a Job
67
67
 
68
- 1. Read `~/.jinn/cron/jobs.json`.
68
+ 1. Read `cron/jobs.json`.
69
69
  2. Find the job by name or id.
70
70
  3. Show the current values to the user.
71
71
  4. Apply the requested changes.
@@ -74,7 +74,7 @@ Field details:
74
74
 
75
75
  ### Deleting a Job
76
76
 
77
- 1. Read `~/.jinn/cron/jobs.json`.
77
+ 1. Read `cron/jobs.json`.
78
78
  2. Find the job by name or id.
79
79
  3. Confirm deletion with the user (show job details).
80
80
  4. Remove the job from the array.
@@ -83,7 +83,7 @@ Field details:
83
83
 
84
84
  ### Enabling / Disabling a Job
85
85
 
86
- 1. Read `~/.jinn/cron/jobs.json`.
86
+ 1. Read `cron/jobs.json`.
87
87
  2. Find the job by name or id.
88
88
  3. Set `enabled` to `true` (enable) or `false` (disable).
89
89
  4. Write the updated array back.
@@ -91,7 +91,7 @@ Field details:
91
91
 
92
92
  ### Listing Jobs
93
93
 
94
- 1. Read `~/.jinn/cron/jobs.json`.
94
+ 1. Read `cron/jobs.json`.
95
95
  2. Display jobs in a readable format, grouped by enabled/disabled.
96
96
  3. Include name, schedule (with plain-English interpretation), timezone, engine, and delivery info.
97
97
 
@@ -11,7 +11,7 @@ This skill activates when the user wants to manage their organization: hiring or
11
11
 
12
12
  ## Organization Structure
13
13
 
14
- The organization lives under the `org/` directory in the {{portalName}} home folder (`~/.jinn/org/`). Each department is a subdirectory containing employee persona YAML files and a task board.
14
+ The organization lives under `org/` in the {{portalName}} home directory — which is always your working directory, so relative paths in this skill resolve correctly on any instance. Each department is a subdirectory containing employee persona YAML files and a task board.
15
15
 
16
16
  ```
17
17
  org/
@@ -11,11 +11,11 @@ This skill activates when {{portalName}} is experiencing issues, errors, or unex
11
11
 
12
12
  ## Diagnostic Steps
13
13
 
14
- Work through these checks in order. Stop and fix issues as you find them.
14
+ Work through these checks in order. Stop and fix issues as you find them. All relative paths below are relative to the {{portalName}} home directory, which is always your working directory.
15
15
 
16
16
  ### 1. Check Gateway Logs
17
17
 
18
- Read `~/.jinn/logs/gateway.log` and look for:
18
+ Read the newest log file under `logs/` and look for:
19
19
  - Error messages or stack traces
20
20
  - Repeated failures or crash loops
21
21
  - Connection refused or timeout errors
@@ -26,7 +26,7 @@ Summarize any problems found to the user.
26
26
 
27
27
  ### 2. Validate Configuration
28
28
 
29
- Read `~/.jinn/config.yaml` and verify:
29
+ Read `config.yaml` and verify:
30
30
  - The file is valid YAML (no syntax errors)
31
31
  - The `port` field is a valid number (typically 3777)
32
32
  - Required fields are present: `port`, `engine`, `model`
@@ -44,13 +44,13 @@ If the engine command is not found, inform the user that the engine is not insta
44
44
  ### 4. Check Session Database
45
45
 
46
46
  Look at the session registry for stuck sessions:
47
- - Read `~/.jinn/sessions.db` or the session storage
47
+ - Read `sessions/registry.db` (the SQLite session registry)
48
48
  - Look for sessions with status `running` that have not been updated recently (more than 30 minutes old)
49
49
  - These may be stuck and need to be reset
50
50
 
51
51
  ### 5. Check Disk and Temp Files
52
52
 
53
- - Check if `~/.jinn/tmp/` contains stale files that should be cleaned up
53
+ - Check if `tmp/` contains stale files that should be cleaned up
54
54
  - Large or numerous temp files can cause issues
55
55
 
56
56
  ## Common Fixes
@@ -68,7 +68,7 @@ jinn stop && jinn start
68
68
 
69
69
  If temp files are stale or causing issues:
70
70
 
71
- Delete all contents of `~/.jinn/tmp/` but keep the directory itself.
71
+ Delete all contents of `tmp/` but keep the directory itself.
72
72
 
73
73
  ### Fix Malformed JSON
74
74
 
@@ -104,7 +104,7 @@ If the gateway cannot bind to its configured port:
104
104
 
105
105
  ## Reference
106
106
 
107
- For understanding {{portalName}}'s architecture and component relationships, refer to the documentation in `~/.jinn/docs/` if available.
107
+ For understanding {{portalName}}'s architecture and component relationships, refer to the documentation in `docs/` if available.
108
108
 
109
109
  ## Error Handling
110
110
 
@@ -11,25 +11,25 @@ This skill activates when the user wants to create a new custom skill for {{port
11
11
 
12
12
  ## Output Location
13
13
 
14
- All skills are stored at `~/.jinn/skills/<skill-name>/SKILL.md`. Each skill lives in its own directory named with kebab-case.
14
+ All skills are stored at `skills/<skill-name>/SKILL.md`. Each skill lives in its own directory named with kebab-case.
15
15
 
16
16
  ## Behavior by Engine
17
17
 
18
18
  ### Claude Code (claude engine)
19
19
 
20
- Claude Code has native skill creation capabilities. Defer to the engine's built-in skill/memory system when available. The engine knows how to create well-structured instruction files. Simply ensure the output file lands at the correct path: `~/.jinn/skills/<skill-name>/SKILL.md`.
20
+ Claude Code has native skill creation capabilities. Defer to the engine's built-in skill/memory system when available. The engine knows how to create well-structured instruction files. Simply ensure the output file lands at the correct path: `skills/<skill-name>/SKILL.md`.
21
21
 
22
22
  ### Codex (codex engine)
23
23
 
24
- Create the SKILL.md file manually following the conventions below. Write the file directly to `~/.jinn/skills/<skill-name>/SKILL.md`.
24
+ Create the SKILL.md file manually following the conventions below. Write the file directly to `skills/<skill-name>/SKILL.md`.
25
25
 
26
26
  ## Steps
27
27
 
28
28
  1. Ask the user what the skill should do. Get a clear description of the capability.
29
29
  2. Ask for a name (kebab-case). Suggest one if the user does not provide it.
30
- 3. Create the directory `~/.jinn/skills/<skill-name>/` if it does not exist.
30
+ 3. Create the directory `skills/<skill-name>/` if it does not exist.
31
31
  4. Generate the SKILL.md content following the conventions below.
32
- 5. Write the file to `~/.jinn/skills/<skill-name>/SKILL.md`.
32
+ 5. Write the file to `skills/<skill-name>/SKILL.md`.
33
33
  6. Confirm the skill was created and summarize what it does.
34
34
 
35
35
  ## Conventions for Writing Good SKILL.md Files
@@ -47,12 +47,12 @@ Bad: "This skill does reporting stuff."
47
47
 
48
48
  Provide numbered steps that an AI engine can follow without ambiguity. Each step should be a concrete action, not a vague directive.
49
49
 
50
- Good: "1. Read the file at `~/.jinn/data/repos.json`. 2. For each repository, fetch the latest commits from the past 7 days."
50
+ Good: "1. Read the file at `data/repos.json`. 2. For each repository, fetch the latest commits from the past 7 days."
51
51
  Bad: "1. Get the data. 2. Process it."
52
52
 
53
53
  ### 3. Data File References
54
54
 
55
- Specify exact file paths for any data the skill reads or writes. Use `~/.jinn/` as the base directory. Define the expected schema for any JSON or YAML files.
55
+ Specify exact file paths for any data the skill reads or writes, relative to the {{portalName}} home directory (always the working directory). Define the expected schema for any JSON or YAML files.
56
56
 
57
57
  ### 4. Error Handling Guidance
58
58
 
@@ -84,7 +84,7 @@ This skill activates when <specific trigger description>.
84
84
 
85
85
  ## Data Files
86
86
 
87
- - `~/.jinn/<path>` — <description of the file and its format>
87
+ - `<path>` — <description of the file and its format>
88
88
 
89
89
  ## Steps
90
90
 
@@ -103,7 +103,7 @@ This skill activates when <specific trigger description>.
103
103
 
104
104
  ## Auto-Sync
105
105
 
106
- The gateway automatically creates symlinks in `~/.jinn/.claude/skills/` and `~/.jinn/.agents/skills/` pointing to each skill directory. This happens on startup and whenever the `skills/` directory changes. You do not need to manage symlinks manually.
106
+ The gateway automatically creates symlinks in `.claude/skills/` and `.agents/skills/` pointing to each skill directory. This happens on startup and whenever the `skills/` directory changes. You do not need to manage symlinks manually.
107
107
 
108
108
  ## Error Handling
109
109
 
@@ -1,6 +0,0 @@
1
- 1:"$Sreact.fragment"
2
- 2:I[84459,["/_next/static/chunks/0y3dnnq~kxyz_.js","/_next/static/chunks/14ge_q22f0n.f.js","/_next/static/chunks/0~6m1p5hnsx2f.js"],"ViewportBoundary"]
3
- 3:I[84459,["/_next/static/chunks/0y3dnnq~kxyz_.js","/_next/static/chunks/14ge_q22f0n.f.js","/_next/static/chunks/0~6m1p5hnsx2f.js"],"MetadataBoundary"]
4
- 4:"$Sreact.suspense"
5
- 5:I[93236,["/_next/static/chunks/0y3dnnq~kxyz_.js","/_next/static/chunks/14ge_q22f0n.f.js","/_next/static/chunks/0~6m1p5hnsx2f.js"],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"OpenRyoko"}],["$","meta","1",{"name":"description","content":"OpenRyoko — Slackで空気を読んで働くAIゲートウェイ"}],["$","link","2",{"rel":"icon","href":"/icon.jpg?icon.0.wpl4.d-5bkf.jpg","sizes":"800x800","type":"image/jpeg"}],["$","link","3",{"rel":"apple-touch-icon","href":"/apple-icon.jpg?apple-icon.0.wpl4.d-5bkf.jpg","sizes":"800x800","type":"image/jpeg"}],["$","$L5","4",{}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"UDwWEfKiZ-eIOpfOIPKQr"}
@@ -1,6 +0,0 @@
1
- 1:"$Sreact.fragment"
2
- 2:I[3971,["/_next/static/chunks/0y3dnnq~kxyz_.js","/_next/static/chunks/14ge_q22f0n.f.js","/_next/static/chunks/0~6m1p5hnsx2f.js"],"ClientProviders"]
3
- 3:I[87979,["/_next/static/chunks/0y3dnnq~kxyz_.js","/_next/static/chunks/14ge_q22f0n.f.js","/_next/static/chunks/0~6m1p5hnsx2f.js"],"default"]
4
- 4:I[35855,["/_next/static/chunks/0y3dnnq~kxyz_.js","/_next/static/chunks/14ge_q22f0n.f.js","/_next/static/chunks/0~6m1p5hnsx2f.js"],"default"]
5
- :HL["/_next/static/chunks/103zsy0q9psfj.css","style"]
6
- 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/103zsy0q9psfj.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/0y3dnnq~kxyz_.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/14ge_q22f0n.f.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/0~6m1p5hnsx2f.js","async":true}]],["$","html",null,{"lang":"ja","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()"}}]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"UDwWEfKiZ-eIOpfOIPKQr"}