arkui-sem
Semantic ArkUI linter for coding agents: a fact extractor finds candidate state bugs and a System One model judges each one.
Overview
arkui-sem lints ArkTS/ArkUI declarative state inside coding agents. A fact extractor finds candidate bugs that ordinary linters miss, such as a field that is written and rendered but not reactive, a nested write the state decorator does not observe, or a resource that is never released.
A small System One decision model then judges each candidate; supported backends include Cloudflare Clef, TypeSafe Jev and DeepSeek flash used as System One, plus an offline heuristic backend. Confident verdicts go back to the agent as findings and uncertain ones as questions. It ships as an opencode plugin and a CLI, with a demo project of buggy pages. The README marks it as a prototype.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Is this candidate a real reactivity or lifecycle bug?(inferred) | yes · no |
How it works
- Fact extractor scans ArkUI code for candidate bugs
- Decision model judges each candidate
- Confident verdicts returned as findings
- Uncertain ones returned as questions to the agent
Strengths
- Catches state bugs linters cannot
- Uncertainty becomes a question, not a false finding
- Backend-agnostic, with an offline mode
Caveats
- Prototype
- Evaluation bench is a private submodule
- Model backends need your own keys
Getting started
node scripts/setup.mjs, then node arkui-sem/dist/cli.js check --backend heuristicAt a glance
- Type
- Project
- Status
- prototype
- Language
- TypeScript
- Runtime
- opencode plugin + CLI
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Semantic ArkUI linter for coding agents: catches state and lifecycle bugs that…
wh000wh000/awesome-jev-live
Frequently asked questions
What does the model decide?
Whether each extracted candidate is a real ArkUI state or lifecycle bug.
Which models are supported?
Cloudflare Clef, TypeSafe Jev, DeepSeek flash and an offline heuristic.
Which agent does it plug into?
opencode, as a plugin, plus a standalone CLI.
Related projects
Coding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.
HookbetaTypeScriptRust code-review gate asking Jev small typed questions about functions and tests, failing CI only on rules measured 80% right.
CLIproductionRustAdvisor for coding agents: git and Stop hooks flag test tampering, secrets and skipped hooks, with optional Jev review findings.
HookbetaRead-only Go CLI that checks files against your plain-language code rules with Jev, locally or in CI.
CLIbetaGoCLI and agent commands auditing a git diff against YAML standards packs, scoring each hunk with Jev so agents fix only flags.
Agent skillbetaTypeScriptFuzzy linter hook for Claude Code and Codex where Jev checks each written file against team rules and reports violations at edit time.
HookbetaTypeScript