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.
- package/README.ja.md +1 -0
- package/README.md +1 -0
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.js +1 -1
- package/dist/akinator/agent-task.d.ts +8 -4
- package/dist/akinator/agent-task.d.ts.map +1 -1
- package/dist/akinator/agent-task.js +29 -7
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/akinator/instructions.d.ts +1 -1
- package/dist/akinator/instructions.d.ts.map +1 -1
- package/dist/akinator/instructions.js +1 -1
- package/dist/akinator/instructions.js.map +1 -1
- package/dist/akinator/memory-probe-types.d.ts +96 -0
- package/dist/akinator/memory-probe-types.d.ts.map +1 -0
- package/dist/akinator/memory-probe-types.js +48 -0
- package/dist/akinator/memory-probe-types.js.map +1 -0
- package/dist/akinator/memory-probe.d.ts +12 -0
- package/dist/akinator/memory-probe.d.ts.map +1 -0
- package/dist/akinator/memory-probe.js +165 -0
- package/dist/akinator/memory-probe.js.map +1 -0
- package/dist/akinator/profile-memory-resolver.d.ts +20 -0
- package/dist/akinator/profile-memory-resolver.d.ts.map +1 -0
- package/dist/akinator/profile-memory-resolver.js +26 -0
- package/dist/akinator/profile-memory-resolver.js.map +1 -0
- package/dist/akinator/profile-memory-store.d.ts +26 -0
- package/dist/akinator/profile-memory-store.d.ts.map +1 -0
- package/dist/akinator/profile-memory-store.js +107 -0
- package/dist/akinator/profile-memory-store.js.map +1 -0
- package/dist/akinator/service.d.ts +1 -0
- package/dist/akinator/service.d.ts.map +1 -1
- package/dist/akinator/service.js +35 -19
- package/dist/akinator/service.js.map +1 -1
- package/dist/akinator/store.d.ts +1 -1
- package/dist/akinator/store.d.ts.map +1 -1
- package/dist/akinator/store.js +1 -1
- package/dist/akinator/store.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/akinator-memory.d.ts +3 -0
- package/dist/commands/akinator-memory.d.ts.map +1 -0
- package/dist/commands/akinator-memory.js +50 -0
- package/dist/commands/akinator-memory.js.map +1 -0
- package/dist/gateway/agent-service.d.ts +2 -0
- package/dist/gateway/agent-service.d.ts.map +1 -1
- package/dist/gateway/agent-service.js +15 -3
- package/dist/gateway/agent-service.js.map +1 -1
- package/dist/ledger/archive.d.ts +2 -1
- package/dist/ledger/archive.d.ts.map +1 -1
- package/dist/ledger/archive.js +47 -8
- package/dist/ledger/archive.js.map +1 -1
- package/dist/ledger/maintenance.d.ts +4 -0
- package/dist/ledger/maintenance.d.ts.map +1 -1
- package/dist/ledger/maintenance.js +63 -2
- package/dist/ledger/maintenance.js.map +1 -1
- package/dist/setup/standard-skills.d.ts +14 -0
- package/dist/setup/standard-skills.d.ts.map +1 -1
- package/dist/setup/standard-skills.js +14 -0
- package/dist/setup/standard-skills.js.map +1 -1
- package/docs/README.ja.md +1 -0
- package/docs/README.md +1 -0
- package/docs/akinator-memory.md +101 -0
- package/docs/client-compatibility.md +12 -5
- package/docs/execution-ledger.md +2 -0
- package/migrations/002_akinator_memory_probe.sql +68 -0
- package/package.json +4 -2
- package/skills/kiokuko-simple-work/SKILL.md +23 -68
- package/skills/kiokuko-single-purpose-functions/SKILL.md +7 -4
- package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +5 -3
- package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +3 -8
- package/skills/kiokuko-soul/SKILL.md +18 -3
- package/skills/kiokuko-ui-design-soul/SKILL.md +16 -25
- package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +14 -10
- package/skills/memory-reasoning/SKILL.md +11 -7
- package/skills/natural-japanese-output/SKILL.md +244 -0
- package/skills/veteran-programmer-skill/SKILL.md +64 -0
- 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
|
|
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
|
-
|
|
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
|
|
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
|
|
29
|
-
2. **Already in this codebase?**
|
|
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
|
|
32
|
-
5. **
|
|
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
|
|
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
|
-
**
|
|
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
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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. `
|
|
80
|
-
4. `kiokuko-
|
|
81
|
-
5. `kiokuko-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
-
##
|
|
39
|
+
## Expert selection
|
|
40
40
|
|
|
41
|
-
Select one dominant expert for each UI component or cohesive
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
30
|
-
deciding whether the recalled claim still applies.
|
|
31
|
-
6.
|
|
32
|
-
|
|
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
|
|
51
|
-
result, and any remaining unverified assumption. If no
|
|
52
|
-
current verification, proceed from repository evidence
|
|
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.
|