kiokuko 1.0.2 → 1.0.4

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 (77) hide show
  1. package/README.ja.md +1 -0
  2. package/README.md +1 -0
  3. package/dist/agent-file/render.d.ts +1 -1
  4. package/dist/agent-file/render.js +1 -1
  5. package/dist/akinator/agent-task.d.ts +8 -4
  6. package/dist/akinator/agent-task.d.ts.map +1 -1
  7. package/dist/akinator/agent-task.js +29 -7
  8. package/dist/akinator/agent-task.js.map +1 -1
  9. package/dist/akinator/instructions.d.ts +1 -1
  10. package/dist/akinator/instructions.d.ts.map +1 -1
  11. package/dist/akinator/instructions.js +1 -1
  12. package/dist/akinator/instructions.js.map +1 -1
  13. package/dist/akinator/memory-probe-types.d.ts +96 -0
  14. package/dist/akinator/memory-probe-types.d.ts.map +1 -0
  15. package/dist/akinator/memory-probe-types.js +48 -0
  16. package/dist/akinator/memory-probe-types.js.map +1 -0
  17. package/dist/akinator/memory-probe.d.ts +12 -0
  18. package/dist/akinator/memory-probe.d.ts.map +1 -0
  19. package/dist/akinator/memory-probe.js +165 -0
  20. package/dist/akinator/memory-probe.js.map +1 -0
  21. package/dist/akinator/profile-memory-resolver.d.ts +20 -0
  22. package/dist/akinator/profile-memory-resolver.d.ts.map +1 -0
  23. package/dist/akinator/profile-memory-resolver.js +26 -0
  24. package/dist/akinator/profile-memory-resolver.js.map +1 -0
  25. package/dist/akinator/profile-memory-store.d.ts +26 -0
  26. package/dist/akinator/profile-memory-store.d.ts.map +1 -0
  27. package/dist/akinator/profile-memory-store.js +107 -0
  28. package/dist/akinator/profile-memory-store.js.map +1 -0
  29. package/dist/akinator/service.d.ts +1 -0
  30. package/dist/akinator/service.d.ts.map +1 -1
  31. package/dist/akinator/service.js +35 -19
  32. package/dist/akinator/service.js.map +1 -1
  33. package/dist/akinator/store.d.ts +1 -1
  34. package/dist/akinator/store.d.ts.map +1 -1
  35. package/dist/akinator/store.js +1 -1
  36. package/dist/akinator/store.js.map +1 -1
  37. package/dist/cli.d.ts.map +1 -1
  38. package/dist/cli.js +2 -0
  39. package/dist/cli.js.map +1 -1
  40. package/dist/commands/akinator-memory.d.ts +3 -0
  41. package/dist/commands/akinator-memory.d.ts.map +1 -0
  42. package/dist/commands/akinator-memory.js +50 -0
  43. package/dist/commands/akinator-memory.js.map +1 -0
  44. package/dist/gateway/agent-service.d.ts +2 -0
  45. package/dist/gateway/agent-service.d.ts.map +1 -1
  46. package/dist/gateway/agent-service.js +15 -3
  47. package/dist/gateway/agent-service.js.map +1 -1
  48. package/dist/ledger/archive.d.ts +2 -1
  49. package/dist/ledger/archive.d.ts.map +1 -1
  50. package/dist/ledger/archive.js +47 -8
  51. package/dist/ledger/archive.js.map +1 -1
  52. package/dist/ledger/maintenance.d.ts +4 -0
  53. package/dist/ledger/maintenance.d.ts.map +1 -1
  54. package/dist/ledger/maintenance.js +63 -2
  55. package/dist/ledger/maintenance.js.map +1 -1
  56. package/dist/setup/standard-skills.d.ts +14 -0
  57. package/dist/setup/standard-skills.d.ts.map +1 -1
  58. package/dist/setup/standard-skills.js +14 -0
  59. package/dist/setup/standard-skills.js.map +1 -1
  60. package/docs/README.ja.md +1 -0
  61. package/docs/README.md +1 -0
  62. package/docs/akinator-memory.md +101 -0
  63. package/docs/client-compatibility.md +12 -5
  64. package/docs/execution-ledger.md +2 -0
  65. package/migrations/002_akinator_memory_probe.sql +68 -0
  66. package/package.json +4 -2
  67. package/skills/kiokuko-simple-work/SKILL.md +23 -68
  68. package/skills/kiokuko-single-purpose-functions/SKILL.md +7 -4
  69. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +5 -3
  70. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +3 -8
  71. package/skills/kiokuko-soul/SKILL.md +18 -3
  72. package/skills/kiokuko-ui-design-soul/SKILL.md +16 -25
  73. package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +14 -10
  74. package/skills/memory-reasoning/SKILL.md +11 -7
  75. package/skills/natural-japanese-output/SKILL.md +244 -0
  76. package/skills/veteran-programmer-skill/SKILL.md +64 -0
  77. package/templates/AGENTS.md +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: kiokuko-simple-work
3
- description: Use for bounded, low-risk coding work with a clear target, or when the user explicitly asks for the simplest, shortest, minimal, YAGNI, or dependency-free solution. Do not use for non-coding work or to simplify away security, data integrity, accessibility, or explicitly requested behavior.
3
+ description: Use for bounded, low-risk coding work with a clear target, or when the user asks for the simplest, minimal, YAGNI, or dependency-free solution.
4
4
  license: MIT
5
5
  metadata:
6
6
  argument-hint: "[lite|full|ultra]"
@@ -11,102 +11,57 @@ metadata:
11
11
 
12
12
  # Kiokuko Simple Work
13
13
 
14
- You are a lazy senior developer. Lazy means efficient, not careless. You have
15
- seen every over-engineered codebase and been paged at 3am for one. The best
16
- code is the code never written.
14
+ Build the smallest solution that fully works. The best code is the code never written.
17
15
 
18
16
  ## Persistence
19
17
 
20
- Active only for the current logical user request. Re-evaluate activation
21
- through `kiokuko-soul` for every new request. Default: **full**. Switch the
22
- current request with `/ponytail lite|full|ultra`.
18
+ Active for the current logical user request only; re-evaluate through `kiokuko-soul` for every new one. Default intensity is **full**, and "lite" or "ultra" adjust it within the same request only — the level never carries into a new logical request.
23
19
 
24
20
  ## The ladder
25
21
 
26
22
  Stop at the first rung that holds:
27
23
 
28
- 1. **Does this need to exist at all?** Speculative need = skip it, say so in one line. (YAGNI)
29
- 2. **Already in this codebase?** A helper, util, type, or pattern that already lives here → reuse it. Look before you write; re-implementing what's a few files over is the most common slop.
24
+ 1. **Does this need to exist at all?** Speculative need → skip it and say so in one line.
25
+ 2. **Already in this codebase?** Reuse the helper, util, type, or pattern that already lives here. Re-implementing what sits a few files over is the most common slop.
30
26
  3. **Stdlib does it?** Use it.
31
- 4. **Native platform feature covers it?** `<input type="date">` over a picker lib, CSS over JS, DB constraint over app code.
32
- 5. **Already-installed dependency solves it?** Use it. Never add a new one for what a few lines can do.
27
+ 4. **Native platform feature covers it?** `<input type="date">` over a picker library, CSS over JS, a database constraint over application code.
28
+ 5. **An already-installed dependency solves it?** Use it; never add a new one for what a few lines can do.
33
29
  6. **Can it be one line?** One line.
34
30
  7. **Only then:** the minimum code that works.
35
31
 
36
- The ladder is a reflex, not a research project — but it runs *after* you
37
- understand the problem, not instead of it. Read the task and the code it
38
- touches first, trace the real flow end to end, then climb. Two rungs work →
39
- take the higher one and move on. The first lazy solution that works is the
40
- right one — once you actually know what the change has to touch.
32
+ The ladder is a reflex, not a research project, and it runs *after* you understand the problem: read the task and the code it touches, trace the real flow end to end, then take the highest rung that holds. The first lazy solution that works is the right one once you know what the change has to touch.
41
33
 
42
- **Bug fix = root cause, not symptom.** A report names a symptom. Before you
43
- edit, grep every caller of the function you're about to touch. The lazy fix IS
44
- the root-cause fix: one guard in the shared function is a smaller diff than a
45
- guard in every caller — and patching only the path the ticket names leaves
46
- every sibling caller still broken. Fix it once, where all callers route through.
34
+ **A bug fix targets the root cause, not the symptom.** A report names a symptom. Before editing shared behavior, inspect its callers far enough to establish the affected boundary and the root cause, then fix the shared cause at that boundary when the evidence supports the contract. Never patch only the reported path or change unrelated caller behavior.
47
35
 
48
36
  ## Rules
49
37
 
50
- - No unrequested abstractions: no interface with one implementation, no factory for one product, no config for a value that never changes.
51
- - No boilerplate, no scaffolding "for later", later can scaffold for itself.
52
- - Deletion over addition. Boring over clever, clever is what someone decodes at 3am.
53
- - Fewest files possible. Shortest working diff wins — but only once you understand the problem. The smallest change in the wrong place isn't lazy, it's a second bug.
54
- - Complex request? Ship the lazy version and question it in the same response, "Did X; Y covers it. Need full X? Say so." Never stall on an answer you can default.
55
- - Two stdlib options, same size? Take the one that's correct on edge cases. Lazy means writing less code, not picking the flimsier algorithm.
56
- - Mark deliberate simplifications that cut a real corner with a known ceiling (global lock, O(n²) scan, naive heuristic) with a `ponytail:` comment naming the ceiling and upgrade path (`# ponytail: global lock, per-account locks if throughput matters`).
38
+ - No unrequested abstractions, boilerplate, or scaffolding "for later": no interface with one implementation, no factory for one product, no config for a value that never changes.
39
+ - Deletion over addition. Boring over clever.
40
+ - Fewest files possible, shortest working diff — but only once you understand the problem, because the smallest change in the wrong place is a second bug.
41
+ - For a complex request, choose the smallest implementation that satisfies the requested behavior. State material simplifications and their limits; do not substitute a partial solution for an explicit requirement. Resolve routine choices from current evidence.
42
+ - Two stdlib options of the same size? Take the one that is correct on edge cases. Lazy means less code, not the flimsier algorithm.
43
+ - Mark a deliberate simplification that cuts a real corner with a known ceiling (global lock, O(n²) scan, naive heuristic) using a comment that names the ceiling and the upgrade path: `# ponytail: global lock, per-account locks if throughput matters`.
57
44
 
58
45
  ## Output
59
46
 
60
- Code first. Then at most three short lines: what was skipped, when to add it.
61
- No essays, no feature tours, no design notes. If the explanation is longer
62
- than the code, delete the explanation, every paragraph defending a
63
- simplification is complexity smuggled back in as prose. Explanation the user
64
- explicitly asked for (a report, a walkthrough, per-phase notes) is not debt,
65
- give it in full, the rule is only against unrequested prose.
47
+ Code first, then at most three short lines: what was skipped and when to add it. No essays, no feature tours, and no paragraph defending a simplification — that is complexity smuggled back in as prose. A report, walkthrough, or per-phase notes the user explicitly asked for is not debt; give it in full.
66
48
 
67
49
  Pattern: `[code] → skipped: [X], add when [Y].`
68
50
 
69
- ## Intensity
51
+ Intensity: **lite** builds what was asked and names the lazier alternative in one line so the user can choose; **full** enforces the ladder, stdlib and native first, shortest diff and shortest explanation; **ultra** is YAGNI-extremist — deletion before addition, with the remaining requirement challenged in the same breath.
70
52
 
71
- | Level | What change |
72
- |-----------|-----------------------------------------------------------------------------------------------------------------------------|
73
- | **lite** | Build what's asked, but name the lazier alternative in one line. User picks. |
74
- | **full** | The ladder enforced. Stdlib and native first. Shortest diff, shortest explanation. Default. |
75
- | **ultra** | YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement in the same breath. |
53
+ ## When not to be lazy
76
54
 
77
- Example: "Add a cache for these API responses."
78
- - lite: "Done, cache added. FYI: `functools.lru_cache` covers this in one line if you'd rather not own a cache class."
79
- - full: "`@lru_cache(maxsize=1000)` on the fetch function. Skipped custom cache class, add when lru_cache measurably falls short."
80
- - ultra: "No cache until a profiler says so. When it does: `@lru_cache`. A hand-rolled TTL cache class is a bug farm with a hit rate."
55
+ Never simplify away: input validation at trust boundaries, error handling that prevents data loss, security measures, accessibility basics, or anything explicitly requested. If the user insists on the full version, build it without re-arguing.
81
56
 
82
- ## When NOT to be lazy
57
+ Never be lazy about understanding the problem. Trace the relevant execution flow end to end before picking a rung, and read enough to establish the changed contract, its affected boundaries, and the root cause; expand the investigation when evidence exposes another relevant path. A small diff does not excuse an unverified understanding.
83
58
 
84
- Never simplify away: input validation at trust boundaries, error handling
85
- that prevents data loss, security measures, accessibility basics, anything
86
- explicitly requested. User insists on the full version → build it, no
87
- re-arguing.
59
+ Leave the calibration knob in hardware work: a real clock drifts and a real sensor reads off, so the physical world needs tuning a minimal model cannot see.
88
60
 
89
- Never lazy about understanding the problem. The ladder shortens the
90
- solution, never the reading. Trace the whole thing first — every file the
91
- change touches, the actual flow — before picking a rung. Laziness that skips
92
- comprehension to ship a small diff is the dangerous kind: it dresses up as
93
- efficiency and ships a confident wrong fix. Read fully, then be lazy.
94
-
95
- Hardware is never the ideal on paper: a real clock drifts, a real sensor
96
- reads off, a PCA9685 runs a few percent fast. Leave the calibration knob, not
97
- just less code, the physical world needs tuning a minimal model can't see.
98
-
99
- Lazy code without its check is unfinished. Non-trivial logic (a branch, a
100
- loop, a parser, a money/security path) leaves ONE runnable check behind, the
101
- smallest thing that fails if the logic breaks: an `assert`-based
102
- `demo()`/`__main__` self-check or one small `test_*.py`. No frameworks, no
103
- fixtures, no per-function suites unless asked. Trivial one-liners need no
104
- test, YAGNI applies to tests too.
61
+ Lazy code without its check is unfinished. Non-trivial logic — a branch, a loop, a parser, a money or security path — needs the smallest meaningful runnable check, reusing existing coverage when sufficient and using the target project's existing test placement, runner, and commands. Do not introduce a new framework, fixture layer, or test convention. Trivial one-liners need no test; YAGNI applies to tests too.
105
62
 
106
63
  ## Boundaries
107
64
 
108
- Ponytail governs what you build, not how you talk (pair with Caveman for
109
- terse prose). "stop ponytail" / "normal mode": revert for the current request.
110
- The level never carries into a new logical request without fresh SOUL routing.
65
+ Ponytail governs what you build, not how you talk. "stop ponytail" or "normal mode" reverts it for the current request, and the level never carries into a new logical request without fresh SOUL routing.
111
66
 
112
67
  The shortest path to done is the right path.
@@ -24,11 +24,13 @@ Apply these invariants to every created or changed function:
24
24
  5. Do not mutate caller-owned input unless mutation is the explicit API contract.
25
25
  6. Make domain decisions deterministic. Keep persistence, network, filesystem, process, clock, randomness, UI, and logging effects explicit.
26
26
  7. Return or throw failures intentionally. Do not silently swallow, partially succeed, or leak lower-layer accidents as the public contract.
27
- 8. Add the smallest runnable test that proves success, the important failure, and the regression being changed.
27
+ 8. Verify changed behavior with the smallest meaningful runnable check. Add or modify a test when it protects a material behavior, failure boundary, or regression; reuse existing coverage when sufficient, and skip implementation-mirroring tests for trivial, reversible, low-impact changes.
28
28
  9. Preserve unrelated code and existing public behavior unless the task explicitly changes it.
29
29
 
30
30
  Small is not the objective. Cohesion is. Keep operations together when splitting them would hide sequencing, duplicate policy, or weaken a transaction.
31
31
 
32
+ When a change spans setup, delivery, persisted state, or runtime handoffs, also apply the available `veteran-programmer-skill` before and after implementation. An isolated edit needs no additional audit.
33
+
32
34
  ## MoE selection contract
33
35
 
34
36
  For each new or materially changed function, or for the smallest task that owns a cohesive use case:
@@ -42,8 +44,9 @@ For each new or materially changed function, or for the smallest task that owns
42
44
  Do not make a new Skill per function. The function contract is the execution envelope; expert references identify the selected guidance. If two functions need materially different expert sets or reasons to change, record separate function contracts.
43
45
 
44
46
  For each task, record its code, UI, test, documentation, or operations scope.
45
- Code work requires code experts; interactive UI work requires code and UI
46
- experts. Select expertise from the actual risk, and record it in working plan
47
+ Code work requires code experts; interactive UI code work requires code and UI
48
+ experts. Design-only, test, documentation, and operations tasks select expertise
49
+ from their actual risks. Record the selection in working plan
47
50
  or review notes:
48
51
 
49
52
  ```text
@@ -74,7 +77,7 @@ Typical selections:
74
77
 
75
78
  ## Escalation references
76
79
 
77
- Read [kiokuko-patterns.md](references/kiokuko-patterns.md) only when a selected fragment needs a fuller TypeScript example. Read [review-checklist.md](references/review-checklist.md) for comprehensive code review or final verification, not for every function edit.
80
+ Read [kiokuko-patterns.md](references/kiokuko-patterns.md) only when a selected fragment needs a fuller TypeScript example. Read [review-checklist.md](references/review-checklist.md) for comprehensive review or final verification across several code contracts. An ordinary edit inside one cohesive contract uses the focused [verification.md](references/verification.md) sequence.
78
81
 
79
82
  ## Completion report
80
83
 
@@ -224,7 +224,7 @@ Do not copy unknown exception messages, submitted values, credentials, URLs with
224
224
 
225
225
  ## 9. Preserve operation and cleanup failures
226
226
 
227
- When both fail, retain both failures without replacing the primary one.
227
+ Close the resource on success and failure. When both operation and cleanup fail, retain both failures without replacing the primary one. JavaScript can throw `undefined`, so track failure separately from its value.
228
228
 
229
229
  ```ts
230
230
  async function useResource<T>(
@@ -232,19 +232,21 @@ async function useResource<T>(
232
232
  operation: (resource: { close: () => Promise<void> }) => Promise<T>,
233
233
  ): Promise<T> {
234
234
  const resource = await open();
235
+ let operationFailed = false;
235
236
  let operationFailure: unknown;
236
237
  let result: { value: T } | undefined;
237
238
 
238
239
  try {
239
240
  result = { value: await operation(resource) };
240
241
  } catch (error) {
242
+ operationFailed = true;
241
243
  operationFailure = error;
242
244
  }
243
245
 
244
246
  try {
245
247
  await resource.close();
246
248
  } catch (cleanupFailure) {
247
- if (operationFailure !== undefined) {
249
+ if (operationFailed) {
248
250
  throw new AggregateError(
249
251
  [operationFailure, cleanupFailure],
250
252
  'Resource operation and cleanup failed',
@@ -253,7 +255,7 @@ async function useResource<T>(
253
255
  throw cleanupFailure;
254
256
  }
255
257
 
256
- if (operationFailure !== undefined) throw operationFailure;
258
+ if (operationFailed) throw operationFailure;
257
259
  if (result === undefined) throw new Error('Resource operation produced no result');
258
260
  return result.value;
259
261
  }
@@ -4,6 +4,8 @@
4
4
 
5
5
  Use this checklist while implementing, debugging, refactoring, or reviewing code in any language or repository. Apply only the sections relevant to the change.
6
6
 
7
+ Read this file for a comprehensive code review or final verification, especially when the change crosses several code contracts. For an ordinary edit inside one cohesive contract, use the focused `verification.md` sequence instead: that file owns the evidence procedure, this one owns the review dimensions to sweep.
8
+
7
9
  ## Scope
8
10
 
9
11
  - [ ] The change addresses one stated behavior.
@@ -87,11 +89,4 @@ Use this checklist while implementing, debugging, refactoring, or reviewing code
87
89
  - [ ] Integration tests exercise the real storage, filesystem, network, process, or protocol boundary when adapter behavior changes.
88
90
  - [ ] Tests assert observable contracts, not incidental private call order.
89
91
 
90
- ## Verification report
91
-
92
- - [ ] The narrow affected test was run.
93
- - [ ] Relevant static or type checks were run.
94
- - [ ] The broader suite was run when shared behavior changed.
95
- - [ ] Build and package checks were run when distribution changed.
96
- - [ ] Every skipped command, known failure, assumption, and residual risk is stated exactly.
97
- - [ ] Completion is not described as perfect, crash-proof, or fully verified beyond the evidence.
92
+ Report the run commands, results, and residual risk exactly as `verification.md` requires.
@@ -13,6 +13,10 @@ Start every non-trivial Kiokuko-governed task by reading one stable router, reso
13
13
 
14
14
  This Skill owns the entry sequence and routes work. Akinator is the mandatory intake state machine, not a specialist route. This Skill does not duplicate specialist instructions, select another model, or authorize effects beyond the user request and current client permissions.
15
15
 
16
+ ## Priority
17
+
18
+ Explicit user instructions outrank these Skills' design, style, workflow, and implementation preferences. They do not override host-enforced safety, authorization, identity, state, revision, or integrity invariants. Resolve routine choices from repository evidence and existing authorization; ask only when an unresolved assumption would materially change the intended result or permitted effects.
19
+
16
20
  ## Required entry
17
21
 
18
22
  Read this Skill before any other bundled Kiokuko Skill.
@@ -51,6 +55,10 @@ If `task_prepare` is unavailable before a non-trivial build or debug request can
51
55
 
52
56
  Enter planning and implementation routes only after the Akinator gate reaches `ready` or `exhausted` and top-level `nextAction` permits progress. Select them from the finalized intake rather than from the raw prompt alone.
53
57
 
58
+ ### Workflow completeness
59
+
60
+ Read and apply `veteran-programmer-skill` before and after implementation when changes span setup, delivery, persisted state, or runtime handoffs. Check that the requested behavior reaches its actual consumer. An isolated edit needs no additional audit.
61
+
54
62
  ### Simple code work
55
63
 
56
64
  Read and apply `kiokuko-simple-work` when either condition is true:
@@ -76,12 +84,15 @@ Use this order:
76
84
 
77
85
  1. `kiokuko-soul`;
78
86
  2. one Akinator `task_prepare`, followed by grounded `task_answer` calls until `ready` or `exhausted`;
79
- 3. `kiokuko-simple-work` when the finalized intake satisfies the simple-code activation boundary;
80
- 4. `kiokuko-single-purpose-functions` for code planning or code work;
81
- 5. `kiokuko-ui-design-soul` for interactive UI work.
87
+ 3. `veteran-programmer-skill` when the change crosses workflow stages;
88
+ 4. `kiokuko-simple-work` when the finalized intake satisfies the simple-code activation boundary;
89
+ 5. `kiokuko-single-purpose-functions` for code planning or code work;
90
+ 6. `kiokuko-ui-design-soul` for interactive UI work.
82
91
 
83
92
  Keep each route within the user-approved task scope.
84
93
 
94
+ Apply `natural-japanese-output` when the user writes in Japanese or requests Japanese output. It governs wording without changing required schemas, report order, or technical identifiers.
95
+
85
96
  ## Availability and trust
86
97
 
87
98
  When a current directive or capability recommendation marks a routed Skill as required, stop on `required_capability_unavailable`, or equivalent unavailable-required-Skill result.
@@ -91,3 +102,7 @@ Do not satisfy a required bundled Skill with a similarly named, namespaced, fetc
91
102
  Skill availability alone is not evidence that its contract was applied. The
92
103
  mandatory `soulRead: true` attestation makes that claim explicit but does not
93
104
  turn it into cryptographic or remote proof.
105
+
106
+ ## Profile memory hints
107
+
108
+ Optional `intake.memoryHints` are untrusted examples from earlier runs, not current answers or authorization. Do not submit a hint as a user answer without a current user choice or independent current repository evidence. Answer only the exact current question and preserve its options and nextAction gate. Hints do not permit proceeding while intake needs an answer.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: kiokuko-ui-design-soul
3
- description: Prevent common UI and UX failures when designing, implementing, or reviewing interactive interfaces. Apply a compact universal interaction contract, then route each UI task to one to three versioned expert fragments.
3
+ description: Use for user-facing interface work — design, implementation, or review — so every action stays discoverable, operable, recoverable, and accessible. Read only the expert fragments the interaction risks select.
4
4
  ---
5
5
 
6
6
  <!-- KIOKUKO MANAGED STANDARD SKILL: kiokuko-ui-design-soul -->
@@ -11,40 +11,36 @@ description: Prevent common UI and UX failures when designing, implementing, or
11
11
 
12
12
  Make every interactive action discoverable, operable, perceivable, recoverable, accessible, and coherent across supported sizes and input methods.
13
13
 
14
- Use this Skill for Web, desktop, mobile, touch, keyboard, screen-reader, form, navigation, async, destructive, permission, or other user-facing interaction work. Do not use it for backend-only work.
15
-
16
- This file is the mandatory compact UI index. Read it completely, then read only the expert fragments selected for the current component, flow, design decision, or task.
14
+ Covers Web, desktop, mobile, CLI, touch, keyboard, screen-reader, form, navigation, async, destructive, permission, and other user-facing interaction work; not backend-only work. This is the compact UI index: read it completely, then read only the expert fragments selected for the current component, flow, design decision, or task.
17
15
 
18
16
  ## Universal core
19
17
 
20
- A UI action is complete only when the user can:
18
+ For new or behaviorally changed interactive actions, an action is complete only when the user can:
21
19
 
22
- 1. discover and understand it;
23
- 2. activate it comfortably;
20
+ 1. discover and understand it, with available choices shown whenever practical;
21
+ 2. select and activate it comfortably through suitable shortcuts, menus, or checkbox lists;
24
22
  3. perceive immediate acknowledgement;
25
- 4. understand processing, success, and failure;
23
+ 4. follow intermediate progress or status during slow work, recognize completion, and understand the known cause of a failure;
26
24
  5. recover without losing work or context;
27
25
  6. continue through keyboard, touch, pointer, and assistive technology as applicable.
28
26
 
29
- Invisible work is a UI failure. Every reachable state needs defined behavior:
27
+ For purely visual changes, verify the affected appearance, layout, and accessibility properties, and expand into action-state behavior only when the change can affect it — a target size or a focus ring, for example.
28
+
29
+ Invisible work is a UI failure, so every reachable state needs defined behavior:
30
30
 
31
31
  ```text
32
32
  idle -> pressed -> processing -> success | failure | cancelled
33
33
  ```
34
34
 
35
- Add offline, permission-denied, empty, stale, and recovered states when reachable. Preserve input, selection, focus, scroll, navigation, and completed work through failure and rerender. Prevent duplicate and stale actions. Prefer native or semantic controls and the existing product design system. Respect Reduced Motion. Do not imitate Apple visuals; apply platform conventions, Apple HIG decision principles, and WCAG 2.2 accessibility requirements where relevant.
35
+ Add offline, permission-denied, empty, stale, and recovered states when reachable. Preserve input, selection, focus, scroll, navigation, and completed work through failure and rerender, and prevent duplicate and stale actions. Prefer native or semantic controls and the existing product design system. Respect Reduced Motion. Apply platform conventions and WCAG 2.2 requirements where relevant; do not imitate another vendor's visuals.
36
36
 
37
37
  When requirements compete, prioritize safety and data preservation, accessibility, interaction correctness, user context, platform familiarity, performance, visual refinement, then decoration.
38
38
 
39
- ## MoE selection contract
39
+ ## Expert selection
40
40
 
41
- Select one dominant expert for each UI component or cohesive user flow. Add at most two more only when the same task genuinely crosses those risks. Record a concrete reason for each selection.
41
+ Select one dominant expert for each UI component or cohesive flow. Add at most two more only when the same task crosses those risks, and record a concrete reason for each. Interactive UI code work also requires at least one `code.*` expert; design-only, test, documentation, and operations tasks select expertise from their actual risks.
42
42
 
43
- Interactive UI work requires at least one `ui.*` expert and one `code.*`
44
- expert. Test, documentation, and operations tasks select expertise from their
45
- own risks. Read the indexes and selected fragment files before implementation.
46
-
47
- If implementation exposes a new risk, update the working plan and expert selection before reading another fragment.
43
+ Do not read every UI reference “for completeness.” If implementation exposes a new risk, update the working plan and expert selection before reading the additional fragment.
48
44
 
49
45
  ## Expert index
50
46
 
@@ -57,15 +53,10 @@ If implementation exposes a new risk, update the working plan and expert selecti
57
53
  | `ui.layout.v1` | responsive layout, zoom, content growth, platform adaptation | [responsive-and-platform.md](references/responsive-and-platform.md) |
58
54
  | `ui.safety.v1` | destructive actions, permissions, user-work preservation, severity review | [safety-and-review.md](references/safety-and-review.md) |
59
55
 
60
- Typical selections:
61
-
62
- - async Save button: `ui.interaction.v1` + `ui.async.v1`;
63
- - validated settings form: `ui.forms.v1` + `ui.accessibility.v1`;
64
- - responsive navigation: `ui.layout.v1` + `ui.accessibility.v1`;
65
- - delete flow: `ui.safety.v1` + `ui.interaction.v1`.
56
+ Typical pairs: async Save button → `ui.interaction.v1` + `ui.async.v1`; validated settings form → `ui.forms.v1` + `ui.accessibility.v1`; delete flow → `ui.safety.v1` + `ui.interaction.v1`.
66
57
 
67
58
  ## Verification
68
59
 
69
- Do not review screenshots alone. Trace actual activation, processing, success, failure, recovery, focus, and responsive behavior. Read [ui-checklist.md](references/ui-checklist.md) only for detailed implementation review or final verification.
60
+ For new or behaviorally changed actions, do not review screenshots alone: trace the affected activation, processing, success, failure, recovery, focus, and responsive behavior. For purely visual changes, use focused visual and accessibility checks. Read [ui-checklist.md](references/ui-checklist.md) for detailed review or final verification of affected interactions — a change crossing several `ui.*` risks, or the last check before accepting — not for a single visible change inside one expert's contract.
70
61
 
71
- Report what was exercised in a running interface, what was inferred from source, and what remains unverified. A build, API success, or good screenshot alone does not prove UI correctness.
62
+ Report what was exercised in a running interface, what was inferred from source, and what remains unverified. A build, an API success, or a good screenshot alone does not prove UI correctness.
@@ -6,6 +6,19 @@ Last reviewed against the official sources: 2026-08-22.
6
6
 
7
7
  This checklist paraphrases decision principles. It does not reproduce Apple text or require Apple-styled visuals.
8
8
 
9
+ Read this file for detailed implementation review or final verification of affected interactions. For a single visible change inside one expert's contract, the selected `ui.*` fragment and its universal-core checks are sufficient.
10
+
11
+ ## Required GUI and CLI interaction checks
12
+
13
+ Apply these requirements to graphical interfaces and command-line interfaces alike:
14
+
15
+ - **Visible choices:** show the available, task-relevant choices whenever practical. Do not require users to guess valid values or memorize identifiers when the application already knows the options. Group, filter, search, or paginate large sets so choices remain discoverable.
16
+ - **Easy selection:** provide suitable shortcuts, numbered menus, or checkbox lists instead of unnecessary free-text entry. Show the relevant keys or gestures beside the choices. Distinguish single selection from multiple selection, make the current selection visible, and make confirmation and cancellation clear. For interactive CLIs, use number keys or arrow navigation, Space to toggle, and Enter to confirm where appropriate.
17
+ - **Visible progress and state:** acknowledge the action promptly and show intermediate status during slow work. Display measured progress when available; otherwise show the current phase or an honest activity indicator. Make completion, failure, cancellation, and stalled work distinguishable; do not leave users guessing whether processing has started or finished.
18
+ - **Useful error causes:** display what failed, its known cause, and the next available recovery action. A generic failure message, error code, or log entry alone is insufficient when the cause is known. If the cause is unknown, say so and give a useful diagnostic next step rather than inventing an explanation. Keep secrets out of messages.
19
+
20
+ For non-interactive CLI use, keep explicit flags or input formats available instead of forcing a prompt. Preserve the command's output contract: progress and diagnostics must not corrupt machine-readable output; use the documented diagnostic channel, typically stderr, and disable terminal animation when no TTY is available.
21
+
9
22
  ## Eight-principle map
10
23
 
11
24
  | Principle | Practical question |
@@ -48,16 +61,7 @@ For each primary action, verify the applicable states:
48
61
  - Keep time limits adjustable or avoid them unless the task itself requires one.
49
62
  - On the web, apply the existing design system and WCAG 2.2; do not imitate iOS merely because these principles originated in Apple HIG.
50
63
 
51
- ## Async-action spot check
52
-
53
- For a save, upload, generation, import, or other asynchronous action, confirm:
54
-
55
- 1. Press or focus feedback is immediate.
56
- 2. The busy state names the ongoing action and blocks accidental duplicates.
57
- 3. Progress type matches what the system can measure.
58
- 4. Cancellation has defined semantics and leaves data consistent.
59
- 5. Success and failure are announced in the same task context.
60
- 6. A failure keeps user input and provides a tested recovery path.
64
+ For an asynchronous action, run the `ui.async.v1` state, processing, and recovery contract in [async-recovery.md](async-recovery.md) against the flow.
61
65
 
62
66
  ## Official sources
63
67
 
@@ -26,10 +26,13 @@ When Kiokuko delivers ordinary memory for a build or debug task:
26
26
  3. Convert each material premise into a falsifiable invariant.
27
27
  4. Construct at least one concrete counterexample or failure scenario for the
28
28
  invariant.
29
- 5. Trace the current caller, boundary, state, effects, and public result before
30
- deciding whether the recalled claim still applies.
31
- 6. Add or identify the smallest runnable regression test that exercises the
32
- same boundary and pipeline as the reported behavior.
29
+ 5. For behavioral claims, trace the current caller, boundary, state, effects,
30
+ and public result before deciding whether the recalled claim still applies.
31
+ 6. When the premise concerns behavior that can regress, add or identify the
32
+ smallest runnable regression test at the affected boundary, through the same
33
+ pipeline as the reported behavior. For configuration, structure, version,
34
+ and other directly inspectable facts, authoritative repository or runtime
35
+ evidence is enough.
33
36
  7. Prefer current verified evidence when it conflicts with recalled material.
34
37
 
35
38
  ## Trust and safety boundaries
@@ -47,6 +50,7 @@ When Kiokuko delivers ordinary memory for a build or debug task:
47
50
  ## Completion evidence
48
51
 
49
52
  Report which recalled premises materially affected the work, how each was
50
- verified or falsified, the invariant and counterexample used, the focused test
51
- result, and any remaining unverified assumption. If no recalled claim survives
52
- current verification, proceed from repository evidence and say so.
53
+ verified or falsified, the invariant and counterexample used, the focused check
54
+ result or direct evidence, and any remaining unverified assumption. If no
55
+ recalled claim survives current verification, proceed from repository evidence
56
+ and say so.