@ngockhoale/ukit 1.1.8 → 1.2.1
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/CHANGELOG.md +11 -0
- package/README.md +9 -5
- package/manifests/platform.full.yaml +40 -0
- package/package.json +1 -1
- package/src/cli/commands/doctor.js +2 -0
- package/src/cli/commands/install.js +8 -7
- package/src/cli/commands/uninstall.js +1 -1
- package/src/core/ensureGitignore.js +2 -0
- package/src/core/runtimeConfig.js +256 -4
- package/src/core/uninstall.js +1 -1
- package/src/index/routeCatalog.js +4 -4
- package/src/index/taskRouting.js +35 -9
- package/templates/.claude/agents/ukit-small-task-maintainer.md +72 -0
- package/templates/.claude/skills/docs-quality/SKILL.md +15 -1
- package/templates/.claude/skills/next-step/SKILL.md +13 -5
- package/templates/.claude/skills/update-status/SKILL.md +16 -2
- package/templates/.claude/ukit/.env.example +17 -0
- package/templates/.claude/ukit/index/route-catalog.mjs +4 -4
- package/templates/.claude/ukit/index/route-task.mjs +35 -9
- package/templates/.codex/README.md +5 -2
- package/templates/.codex/settings.json +126 -4
- package/templates/.gitignore +2 -0
- package/templates/AGENTS.md +13 -3
- package/templates/CLAUDE.md +13 -3
- package/templates/docs/INSTALL.md +2 -0
- package/templates/docs/PROJECT.md +5 -4
- package/templates/docs/STATUS.md +1 -1
- package/templates/docs/TASKS.md +79 -0
- package/templates/docs/UKIT_USAGE_GUIDE.md +4 -3
- package/templates/ukit/README.md +1 -1
- package/templates/ukit/storage/config.json +116 -2
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
1. Run `ukit memory recall "<current task>"` for non-trivial work; reuse relevant `## Previous Context` before asking the user to restate prior decisions
|
|
46
46
|
2. Read `docs/MEMORY.md` — architecture decisions, active constraints, known bugs
|
|
47
47
|
3. Read `docs/STATUS.md` for open-ended status/continue prompts or meaningful continuation context; treat stale status as orientation only
|
|
48
|
-
4. Read `docs/
|
|
49
|
-
5.
|
|
50
|
-
6.
|
|
51
|
-
7.
|
|
48
|
+
4. Read `docs/TASKS.md` only when selecting queued AI work, or when status points at queued tasks; apply safe cleanup without deleting unfinished human intent
|
|
49
|
+
5. Read `docs/CODE_MAP.md` if it exists — structural navigation index
|
|
50
|
+
6. Use the installed source-code index / routed helpers to localize the smallest relevant file + test set first
|
|
51
|
+
7. Scan recent `docs/WORKLOG.md` entries if continuing prior work
|
|
52
|
+
8. Verify understanding against source before acting — **docs orient, source is truth; keep the index-first workflow intact**
|
package/templates/docs/STATUS.md
CHANGED
|
@@ -78,4 +78,4 @@ If this file is stale, AI must treat it as orientation only and verify against s
|
|
|
78
78
|
|
|
79
79
|
## Future Candidate: Task Context Files
|
|
80
80
|
|
|
81
|
-
v1.2 candidate: task-scoped `docs/context/<slug>.md` files for granular bug/feature context. Keep this out of
|
|
81
|
+
v1.2 candidate: task-scoped `docs/context/<slug>.md` files for granular bug/feature context. Keep this out of default scope unless a project already uses that folder.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# AI Task Queue — {{project.name}}
|
|
2
|
+
|
|
3
|
+
> Local AI task queue.
|
|
4
|
+
> Use this for work the human wants an AI/agent to pick up later.
|
|
5
|
+
> Keep tasks actionable; source code, tests, and project docs remain ground truth.
|
|
6
|
+
|
|
7
|
+
## How to Use
|
|
8
|
+
|
|
9
|
+
- Human or AI can add tasks here when work is deferred.
|
|
10
|
+
- AI should read this for open-ended “what next?” / “continue” prompts, or when the user asks to work from the task queue.
|
|
11
|
+
- AI/agents may implement tasks from `Ready for AI`; do not dispatch from `Inbox` until the task has acceptance and verification notes.
|
|
12
|
+
- This file is local working state, not project history and not a full roadmap.
|
|
13
|
+
- Completed work belongs in `docs/WORKLOG.md`; current state belongs in `docs/STATUS.md`.
|
|
14
|
+
|
|
15
|
+
## Auto-Cleanup Rules
|
|
16
|
+
|
|
17
|
+
AI should keep this file compact by default whenever it reads or updates the queue:
|
|
18
|
+
|
|
19
|
+
- Auto-remove exact duplicate tasks.
|
|
20
|
+
- Auto-prune `Done Recently` to max 10 compact lines.
|
|
21
|
+
- Auto-remove tasks from active sections after all are true:
|
|
22
|
+
- the task is done,
|
|
23
|
+
- verification is recorded,
|
|
24
|
+
- completion is summarized in `docs/WORKLOG.md` or `Done Recently`.
|
|
25
|
+
- Auto-move stale, vague, or blocked tasks to `Deferred / Needs Human Review` instead of deleting them.
|
|
26
|
+
- Do not delete non-completed human-authored tasks unless the user explicitly asks for cleanup and the task is clearly obsolete or duplicated.
|
|
27
|
+
- If the user says “clean tasks” / “dọn tasks”, perform the cleanup pass and report what changed.
|
|
28
|
+
|
|
29
|
+
## Inbox
|
|
30
|
+
|
|
31
|
+
<!-- Raw ideas go here first. Refine before moving to Ready for AI. -->
|
|
32
|
+
|
|
33
|
+
- [ ] TODO task title
|
|
34
|
+
- Why: TODO
|
|
35
|
+
- Context: TODO
|
|
36
|
+
- Expected files: TODO
|
|
37
|
+
- Acceptance: TODO
|
|
38
|
+
- Verification: TODO
|
|
39
|
+
- Risk: low / medium / high
|
|
40
|
+
|
|
41
|
+
## Ready for AI
|
|
42
|
+
|
|
43
|
+
<!-- Tasks here should be specific enough for an AI/agent to start without scanning the whole repo. -->
|
|
44
|
+
|
|
45
|
+
- [ ] TODO ready task
|
|
46
|
+
- Goal: TODO
|
|
47
|
+
- Files likely involved: TODO
|
|
48
|
+
- Constraints: TODO
|
|
49
|
+
- Acceptance: TODO
|
|
50
|
+
- Verification: TODO
|
|
51
|
+
- Notes: TODO
|
|
52
|
+
|
|
53
|
+
## In Progress
|
|
54
|
+
|
|
55
|
+
- [ ] TODO active task
|
|
56
|
+
- Owner: human / Claude / Codex / OpenCode / agent
|
|
57
|
+
- Started: TODO YYYY-MM-DD
|
|
58
|
+
- Current state: TODO
|
|
59
|
+
- Next action: TODO
|
|
60
|
+
|
|
61
|
+
## Blocked / Waiting
|
|
62
|
+
|
|
63
|
+
- [ ] TODO blocked task
|
|
64
|
+
- Blocker: TODO
|
|
65
|
+
- Needed from human: TODO
|
|
66
|
+
|
|
67
|
+
## Deferred / Needs Human Review
|
|
68
|
+
|
|
69
|
+
<!-- AI should move stale/vague/blocked tasks here instead of deleting uncertain human intent. -->
|
|
70
|
+
|
|
71
|
+
- [ ] TODO deferred task
|
|
72
|
+
- Reason deferred: TODO
|
|
73
|
+
- Last touched: TODO YYYY-MM-DD
|
|
74
|
+
|
|
75
|
+
## Done Recently
|
|
76
|
+
|
|
77
|
+
<!-- Keep max 10. Older completed work belongs in docs/WORKLOG.md. -->
|
|
78
|
+
|
|
79
|
+
- TODO YYYY-MM-DD — task — verification
|
|
@@ -139,9 +139,10 @@ Project đang ở đâu, làm gì tiếp?
|
|
|
139
139
|
Expected UKit behavior:
|
|
140
140
|
1. auto-load the hidden next-step lane
|
|
141
141
|
2. read `docs/STATUS.md` first and show whether it is fresh, possibly stale, stale, or missing
|
|
142
|
-
3.
|
|
143
|
-
4.
|
|
144
|
-
5. if
|
|
142
|
+
3. read `docs/TASKS.md` only when selecting queued work or when status points at queued tasks
|
|
143
|
+
4. suggest only a few actionable next candidates
|
|
144
|
+
5. if status/tasks are stale, verify with source/index before treating any candidate as authoritative
|
|
145
|
+
6. if the prompt names a concrete bug/feature/review target, keep the concrete workflow primary instead of producing a global roadmap
|
|
145
146
|
|
|
146
147
|
---
|
|
147
148
|
|
package/templates/ukit/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UKit Shared Runtime
|
|
2
2
|
|
|
3
|
-
This folder stores shared UKit runtime state for v1.1
|
|
3
|
+
This folder stores shared UKit runtime state for v1.2.1 features.
|
|
4
4
|
|
|
5
5
|
- `storage/config.json` — runtime feature flags and defaults
|
|
6
6
|
- `storage/cache/` — prompt-cache, compact history, compact pressure state, output summaries, and preserved raw tool outputs under `storage/cache/tee/`
|
|
@@ -1,11 +1,65 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.1
|
|
2
|
+
"version": "1.2.1",
|
|
3
3
|
"agent": "claude-code",
|
|
4
4
|
"compact": {
|
|
5
5
|
"enabled": true,
|
|
6
6
|
"tokenThreshold": 100000,
|
|
7
7
|
"contextRotDetection": true,
|
|
8
|
-
"askBeforeDrop": true
|
|
8
|
+
"askBeforeDrop": true,
|
|
9
|
+
"codexContext": {
|
|
10
|
+
"enabled": true,
|
|
11
|
+
"autoCompact": true,
|
|
12
|
+
"budgetTokens": 60000,
|
|
13
|
+
"compactTarget": 150,
|
|
14
|
+
"compactTargetUnit": "lines",
|
|
15
|
+
"decisionModelEnv": "UKIT_SMALL_TASK_MODEL",
|
|
16
|
+
"decisionAgent": "ukit-small-task-maintainer",
|
|
17
|
+
"mode": "soft-handoff",
|
|
18
|
+
"preserve": [
|
|
19
|
+
"current-goal",
|
|
20
|
+
"non-negotiable-rules",
|
|
21
|
+
"active-files",
|
|
22
|
+
"decisions",
|
|
23
|
+
"unresolved-failures",
|
|
24
|
+
"verification-evidence",
|
|
25
|
+
"next-actions"
|
|
26
|
+
],
|
|
27
|
+
"compactTargetRecommendedRange": [
|
|
28
|
+
120,
|
|
29
|
+
170
|
|
30
|
+
],
|
|
31
|
+
"compactTargetMax": 170
|
|
32
|
+
},
|
|
33
|
+
"agentContext": {
|
|
34
|
+
"enabled": true,
|
|
35
|
+
"decisionModelEnv": "UKIT_SMALL_TASK_MODEL",
|
|
36
|
+
"decisionAgent": "ukit-small-task-maintainer",
|
|
37
|
+
"executionMode": "sidecar-parallel",
|
|
38
|
+
"mustNotBlockMainTask": true,
|
|
39
|
+
"targets": {
|
|
40
|
+
"claude": {
|
|
41
|
+
"autoCompact": true,
|
|
42
|
+
"mode": "precompact-reinject",
|
|
43
|
+
"preserveExistingHooks": true
|
|
44
|
+
},
|
|
45
|
+
"opencode": {
|
|
46
|
+
"autoCompact": true,
|
|
47
|
+
"mode": "native-auto-prune",
|
|
48
|
+
"preserveExistingCompaction": true
|
|
49
|
+
},
|
|
50
|
+
"codex": {
|
|
51
|
+
"autoCompact": true,
|
|
52
|
+
"mode": "soft-handoff",
|
|
53
|
+
"compactTarget": 150,
|
|
54
|
+
"compactTargetUnit": "lines",
|
|
55
|
+
"compactTargetRecommendedRange": [
|
|
56
|
+
120,
|
|
57
|
+
170
|
|
58
|
+
],
|
|
59
|
+
"compactTargetMax": 170
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
9
63
|
},
|
|
10
64
|
"tokenPipeline": {
|
|
11
65
|
"inputCompression": true,
|
|
@@ -33,5 +87,65 @@
|
|
|
33
87
|
"autoRetry": true,
|
|
34
88
|
"maxRetries": 1,
|
|
35
89
|
"confidenceThreshold": 50
|
|
90
|
+
},
|
|
91
|
+
"subagents": {
|
|
92
|
+
"enabled": true,
|
|
93
|
+
"smallTaskModel": "unic-lite",
|
|
94
|
+
"smallTaskAgent": "ukit-small-task-maintainer",
|
|
95
|
+
"smallTaskUseCases": [
|
|
96
|
+
"task-cleanup",
|
|
97
|
+
"compact-decision",
|
|
98
|
+
"codex-context-budget",
|
|
99
|
+
"doc-summarization",
|
|
100
|
+
"classification",
|
|
101
|
+
"small-decision",
|
|
102
|
+
"auto-triage",
|
|
103
|
+
"queue-maintenance",
|
|
104
|
+
"workspace-maintenance"
|
|
105
|
+
],
|
|
106
|
+
"keepMainModelFor": [
|
|
107
|
+
"security",
|
|
108
|
+
"risky-code-change",
|
|
109
|
+
"release",
|
|
110
|
+
"data-loss",
|
|
111
|
+
"architecture-decision",
|
|
112
|
+
"deep-reasoning"
|
|
113
|
+
],
|
|
114
|
+
"decisionPolicy": {
|
|
115
|
+
"nonBlocking": true,
|
|
116
|
+
"endUserInvisible": true,
|
|
117
|
+
"handBackOnRisk": true,
|
|
118
|
+
"optimizeOrder": [
|
|
119
|
+
"quality",
|
|
120
|
+
"safety",
|
|
121
|
+
"speed",
|
|
122
|
+
"token-discipline"
|
|
123
|
+
],
|
|
124
|
+
"decisions": [
|
|
125
|
+
"fast-vs-slow-lane",
|
|
126
|
+
"safe-vs-risky-lane",
|
|
127
|
+
"skill-routing-needed",
|
|
128
|
+
"step-budget-enough",
|
|
129
|
+
"compact-now-or-later",
|
|
130
|
+
"summarize-docs-or-keep-detail"
|
|
131
|
+
],
|
|
132
|
+
"stepBudgets": {
|
|
133
|
+
"trivial": {
|
|
134
|
+
"maxSteps": 1,
|
|
135
|
+
"verification": "skip-unless-risky"
|
|
136
|
+
},
|
|
137
|
+
"simple": {
|
|
138
|
+
"maxSteps": 2,
|
|
139
|
+
"verification": "targeted-if-covered"
|
|
140
|
+
},
|
|
141
|
+
"nonTrivial": {
|
|
142
|
+
"maxSteps": 4,
|
|
143
|
+
"verification": "targeted-then-widen-on-risk"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"executionMode": "sidecar-parallel",
|
|
147
|
+
"mustNotBlockMainTask": true,
|
|
148
|
+
"maxSidecarWaitMs": 0
|
|
149
|
+
}
|
|
36
150
|
}
|
|
37
151
|
}
|