arkaos 4.18.0 → 4.19.0

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.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **The Operating System for AI Agent Teams.**
4
4
 
5
- 86 agents. 17 departments. 279 skills. Enterprise frameworks. Multi-runtime. One install.
5
+ 86 agents. 17 departments. 283 skills. Enterprise frameworks. Multi-runtime. One install.
6
6
 
7
7
  ```bash
8
8
  npx arkaos install
package/VERSION CHANGED
@@ -1 +1 @@
1
- 4.18.0
1
+ 4.19.0
package/arka/SKILL.md CHANGED
@@ -25,7 +25,7 @@ measures citation compliance per turn.
25
25
  # ArkaOS — Main Orchestrator
26
26
 
27
27
  > **The Operating System for AI Agent Teams**
28
- > 86 agents. 17 departments. 279 skills. Multi-runtime. Dashboard. Knowledge RAG.
28
+ > 86 agents. 17 departments. 283 skills. Multi-runtime. Dashboard. Knowledge RAG.
29
29
 
30
30
  ## ⛔ Evidence flow — 4 gates (NON-NEGOTIABLE)
31
31
 
@@ -3,8 +3,8 @@
3
3
  # Mirror of config/skills-provenance.yaml for the agent tree. The parser
4
4
  # (core/agents/provenance.py) closes every way of writing a BROKEN
5
5
  # provenance block, but it cannot see an agent that never writes one:
6
- # absence reads as first-party, which is exactly what a forgotten ECC
7
- # agent port looks like.
6
+ # absence reads as first-party, which is exactly what a forgotten
7
+ # third-party agent port looks like.
8
8
  #
9
9
  # EVERY agent YAML must be CLASSIFIED — listed in `first_party` below,
10
10
  # listed in `derived` below, or declaring a `provenance:` block in its
@@ -19,9 +19,9 @@
19
19
  #
20
20
  # What the baseline is and is not:
21
21
  # ASSERTED: these are ArkaOS originals.
22
- # PROVEN: none can be ECC-derived — every one was created before
23
- # 2026-07-14, the day we first read that repository (git log
24
- # --diff-filter=A; verified once).
22
+ # PROVEN: none can be externally derived — every one was created
23
+ # before 2026-07-14, when this campaign began studying external
24
+ # repositories (git log --diff-filter=A; verified once).
25
25
  # The property the control rests on is that the set is CLOSED:
26
26
  # anything new must classify itself.
27
27
  #
@@ -29,7 +29,7 @@
29
29
  #
30
30
  # derived format:
31
31
  # departments/<dept>/agents/<slug>.yaml:
32
- # origin: <lowercase-slug> # e.g. ecc-derived, community
32
+ # origin: <lowercase-slug> # e.g. vendor-derived, community
33
33
  # source: https://...
34
34
  # license: MIT
35
35
 
@@ -30,10 +30,11 @@
30
30
  # ASSERTED, not independently verified: that these 275 are ArkaOS
31
31
  # originals. Nobody re-derived each one from scratch to prove it.
32
32
  #
33
- # PROVEN, for the lineage that matters: none of them can be
34
- # ECC-derived. `git log --diff-filter=A` puts every creation between
35
- # 2026-03-14 and 2026-07-13 — all of them before 2026-07-14, the day
36
- # we first read that repository. Zero exceptions.
33
+ # PROVEN, for the lineage that matters: none of them can be derived
34
+ # from an external source. `git log --diff-filter=A` puts every
35
+ # creation between 2026-03-14 and 2026-07-13 — all of them before
36
+ # 2026-07-14, when this campaign began studying external repositories.
37
+ # Zero exceptions.
37
38
  #
38
39
  # The property the control actually rests on is neither: it is that
39
40
  # the set is CLOSED. Anything new must classify itself, whatever the
@@ -52,32 +53,13 @@
52
53
  #
53
54
  # derived format:
54
55
  # departments/<dept>/skills/<slug>:
55
- # origin: <lowercase-slug> # e.g. ecc-derived, community
56
+ # origin: <lowercase-slug> # e.g. vendor-derived, community
56
57
  # source: https://... # where it came from
57
58
  # license: MIT # what we are bound by
58
59
 
59
60
  baseline_date: 2026-07-14
60
61
 
61
- derived:
62
- # ECC review lenses (Track C1) — specialised review skills ArkaOS
63
- # lacked, ported from the MIT-licensed everything-claude-code repo and
64
- # rewritten in ArkaOS voice with ArkaOS personas.
65
- departments/dev/skills/silent-failure-hunter:
66
- origin: ecc-derived
67
- source: https://github.com/affaan-m/ecc
68
- license: MIT
69
- departments/dev/skills/type-design-analyzer:
70
- origin: ecc-derived
71
- source: https://github.com/affaan-m/ecc
72
- license: MIT
73
- departments/dev/skills/pr-test-analyzer:
74
- origin: ecc-derived
75
- source: https://github.com/affaan-m/ecc
76
- license: MIT
77
- departments/dev/skills/click-path-audit:
78
- origin: ecc-derived
79
- source: https://github.com/affaan-m/ecc
80
- license: MIT
62
+ derived: {}
81
63
 
82
64
  first_party:
83
65
  - arka
@@ -1,19 +1,18 @@
1
1
  """Agent provenance — supply-chain lineage for every agent YAML.
2
2
 
3
- The skill tree got provenance in v4.17.0; agents did not, and the ECC
4
- teardown puts ~15 derived agents on the roadmap. An ECC agent ported
5
- today would land with exactly the hole skill provenance closes: no
6
- origin, no licence trail, indistinguishable from an ArkaOS original.
7
- This is the agent-side mirror, and it must land before the first agent
8
- port.
3
+ The skill tree got provenance in v4.17.0; agents did not. If a
4
+ third-party agent is ever ported in, it would land with exactly the
5
+ hole skill provenance closes: no origin, no licence trail,
6
+ indistinguishable from an ArkaOS original. This is the agent-side
7
+ mirror, and it guards that boundary before any such port.
9
8
 
10
9
  An agent YAML may carry a top-level ``provenance`` block:
11
10
 
12
- id: silent-failure-hunter
11
+ id: example-agent
13
12
  name: ...
14
13
  provenance:
15
- origin: ecc-derived
16
- source: https://github.com/affaan-m/ecc
14
+ origin: vendor-derived
15
+ source: https://example.com/upstream
17
16
  license: MIT
18
17
 
19
18
  Absent means first-party. The validation rules are the shared
@@ -98,7 +98,7 @@ class KnowledgeEntry(BaseModel):
98
98
  # Instinct confidence lives in a band, never at the poles. 0.3 is a weak
99
99
  # hypothesis worth keeping; 0.9 is strong but never certainty (an agent
100
100
  # that is "certain" from a handful of observations is the failure the
101
- # band prevents). Mirrors the ECC continuous-learning instinct model.
101
+ # band prevents). Follows an established continuous-learning instinct model.
102
102
  INSTINCT_CONFIDENCE_MIN = 0.3
103
103
  INSTINCT_CONFIDENCE_MAX = 0.9
104
104
  INSTINCT_SCOPES = ("project", "global")
@@ -107,7 +107,7 @@ INSTINCT_SCOPES = ("project", "global")
107
107
  class ActionableInsight(BaseModel):
108
108
  """Actionable insight — generated by agents for proactive presentation.
109
109
 
110
- Carries the ECC-style instinct fields (confidence, scope,
110
+ Carries the instinct fields (confidence, scope,
111
111
  evidence_count) so an insight can strengthen on corroboration, weaken
112
112
  on contradiction, and be promoted from project to global once the
113
113
  same signal is seen across enough projects with high enough mean
@@ -9,12 +9,12 @@ author who ported it moves on.
9
9
  Contract (opt-in, absence means first-party):
10
10
 
11
11
  ---
12
- name: dev/silent-failure-hunter
12
+ name: dev/example-skill
13
13
  description: ...
14
14
  allowed-tools: [Read, Grep, Glob]
15
15
  metadata:
16
- origin: ecc-derived
17
- source: https://github.com/affaan-m/ecc
16
+ origin: vendor-derived
17
+ source: https://example.com/upstream
18
18
  license: MIT
19
19
  ---
20
20
 
@@ -3,8 +3,7 @@
3
3
  An agent that hits a lint or type error has two ways out: fix the code,
4
4
  or edit the config so the check stops firing. The second is faster and
5
5
  almost always wrong — it silences the signal for the whole team, not
6
- just this change. The ECC teardown found a hook for exactly this
7
- (`config-protection`), and it is the cheapest high-value control in the
6
+ just this change. This gate is the cheapest high-value control in the
8
7
  set: refuse edits to linter/formatter/type-checker configs, and the
9
8
  agent is left with the honest path.
10
9
 
@@ -13,9 +13,7 @@ description: >
13
13
  brand/design-review wins.
14
14
  allowed-tools: [Read, Grep, Glob]
15
15
  metadata:
16
- origin: ecc-derived
17
- source: https://github.com/affaan-m/ecc
18
- license: MIT
16
+ origin: arkaos
19
17
  ---
20
18
 
21
19
  # Click-Path Audit — `/dev click-path-audit`
@@ -33,11 +31,13 @@ clicks.
33
31
 
34
32
  ## The bug this catches
35
33
 
36
- A "New Email" button called `setComposeMode(true)` then `selectThread(null)`.
37
- Each call was correct on its own, but `selectThread` reset `composeMode`
38
- back to false as a side effect, so the button opened nothing no type
39
- error, no crash, and no unit test to catch it. Tracing the two calls in
40
- order makes the reset obvious on the page.
34
+ An "Apply filters" button called `setFilters(next)` and then, to close the
35
+ panel, `resetPanel()`. Each worked alone but `resetPanel` cleared the
36
+ draft filter state as part of tidying up, so the store ended with the old
37
+ filters and the list never changed. No type error, no crash, no failing
38
+ unit test; the two setters simply fought and the second won. Walking the
39
+ handler's calls in order puts the cleared write next to the one it
40
+ cancelled, and the bug is visible without ever running the app.
41
41
 
42
42
  ## Process
43
43
 
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: dev/laravel-review
3
+ description: >
4
+ Laravel/PHP review against ArkaOS conventions — mass assignment, N+1
5
+ queries, Blade XSS, business logic leaking into controllers, missing
6
+ FormRequests, and strict-types gaps — with the fix each one needs.
7
+ TRIGGER: "/dev laravel-review", "review this Laravel", "review the PHP",
8
+ "revê este controller", "revê o Eloquent", "isto está seguro em
9
+ Laravel?", any diff touching *.php, Blade, or Eloquent models. SKIP:
10
+ language-agnostic pre-merge review -> dev/code-review wins; database
11
+ schema/migration design -> dev/db-design wins; a security audit of the
12
+ whole app -> dev/security-audit wins.
13
+ allowed-tools: [Read, Grep, Glob, Bash]
14
+ metadata:
15
+ origin: arkaos
16
+ ---
17
+
18
+ # Laravel Review — `/dev laravel-review`
19
+
20
+ > **Agent:** Gonçalo (Laravel Specialist) | **Framework:** Laravel conventions, OWASP, ArkaOS Services+Repositories standard
21
+
22
+ Laravel makes the wrong thing easy: `create($request->all())` is one line
23
+ and a mass-assignment hole, an Eloquent relation in a Blade loop is one
24
+ property access and an N+1, `{!! $x !!}` is shorter than the escaped form
25
+ and an XSS. This review reads a PHP diff for the specific ways the
26
+ framework's convenience turns into a defect, and holds it to the ArkaOS
27
+ Laravel standard — Services and Repositories, FormRequests everywhere,
28
+ `declare(strict_types=1)`, not just to PSR-12.
29
+
30
+ ## Review Priorities
31
+
32
+ ### Critical — Security
33
+ - **Mass assignment**: `create($request->all())` or `$guarded = []` → whitelist `$fillable`, or pass `$request->validated()` from a FormRequest.
34
+ - **SQL injection**: `DB::raw()`/`whereRaw()`/string-interpolated queries with user input → parameterised bindings or Eloquent.
35
+ - **Blade XSS**: `{!! $userInput !!}` without HTMLPurifier → `{{ }}`, or purify explicitly.
36
+ - **Command/path**: `exec`/`shell_exec`/`system` or `Storage` paths from user input → validate and sanitise.
37
+ - **Unvalidated uploads**: no MIME/size/extension check on file inputs.
38
+ - **Weak crypto / secrets**: MD5 for passwords, hardcoded keys.
39
+
40
+ ### Critical — Error handling
41
+ - **Swallowed exceptions**: `catch (\Throwable $e) {}` with no log and no re-throw.
42
+ - **Missing validation**: a controller action with no FormRequest and no inline rules.
43
+
44
+ ### High — ArkaOS Laravel standard
45
+ - **Business logic in controllers** → extract to a Service or Action; the controller orchestrates, it does not decide.
46
+ - **Data access outside a Repository** where the ecosystem uses them.
47
+ - **No FormRequest** on a write endpoint → `$request->validated()`, never `$request->all()`.
48
+ - **Missing `declare(strict_types=1)`** in non-view PHP; untyped public method params/returns.
49
+ - **N+1**: an Eloquent relation accessed in a loop or serialisation with no `with()`/`$with`.
50
+ - **Missing `$fillable`/`$casts`** on models; **missing Feature test** (`RefreshDatabase`) on the changed behaviour.
51
+
52
+ ## Process
53
+
54
+ 1. `git diff -- '*.php' '*.blade.php'` to scope the change.
55
+ 2. Run PHPStan/Pint if configured — read their output, do not just report their absence.
56
+ 3. Read each changed controller/model/service against the priorities, heaviest first.
57
+
58
+ ## Proactive Triggers
59
+
60
+ Surface these WITHOUT being asked:
61
+
62
+ - `$request->all()` reaching a `create`/`update`/`fill` → the mass-assignment hole; name the fields it exposes
63
+ - a relation accessed inside `@foreach` or an API Resource with no eager load → the N+1 and the `with()` that fixes it
64
+ - a controller method over ~15 lines carrying query + business logic → the Service/Action to extract
65
+
66
+ ## Output
67
+
68
+ ```markdown
69
+ ## Laravel Review
70
+
71
+ **Scope:** {changed PHP / Blade}
72
+ **Verdict:** {APPROVED / CHANGES REQUESTED}
73
+
74
+ ### Critical
75
+ - [ ] {file}:{line} — {the hole} → {the fix}
76
+
77
+ ### High (ArkaOS standard)
78
+ - [ ] {file}:{line} — {the convention broken} → {the fix}
79
+
80
+ ### Positive
81
+ {what follows the standard well}
82
+ ```
@@ -12,9 +12,7 @@ description: >
12
12
  dev/silent-failure-hunter wins.
13
13
  allowed-tools: [Read, Grep, Glob, Bash]
14
14
  metadata:
15
- origin: ecc-derived
16
- source: https://github.com/affaan-m/ecc
17
- license: MIT
15
+ origin: arkaos
18
16
  ---
19
17
 
20
18
  # PR Test Analyzer — `/dev pr-test-analyzer`
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: dev/python-review
3
+ description: >
4
+ Python review against ArkaOS conventions — missing type hints, mutable
5
+ default arguments, bare excepts, unvalidated boundaries, injection, and
6
+ Pydantic/FastAPI mistakes — with the fix each needs. TRIGGER: "/dev
7
+ python-review", "review this Python", "review the FastAPI", "revê o
8
+ Python", "revê este endpoint", "isto está pythonico?", any diff touching
9
+ *.py. SKIP: language-agnostic pre-merge review -> dev/code-review wins;
10
+ pytest coverage of the change -> dev/pr-test-analyzer wins; swallowed-error
11
+ hunt across the codebase -> dev/silent-failure-hunter wins.
12
+ allowed-tools: [Read, Grep, Glob, Bash]
13
+ metadata:
14
+ origin: arkaos
15
+ ---
16
+
17
+ # Python Review — `/dev python-review`
18
+
19
+ > **Agent:** Diogo (Python Backend Specialist) | **Framework:** Type hints, Pydantic validation, PEP 8, ArkaOS core conventions
20
+
21
+ Python trusts the author, and that trust is where the bugs live: a
22
+ mutable default argument shared across every call, a bare `except` that
23
+ buries the traceback, a function with no type hints that the checker
24
+ cannot help. This review reads a Python diff against the ArkaOS core
25
+ standard — type hints on every signature, Pydantic at the boundary,
26
+ functions under thirty lines — and for the runtime traps the interpreter
27
+ will happily let ship.
28
+
29
+ ## Review Priorities
30
+
31
+ ### Critical — Correctness traps
32
+ - **Mutable default argument**: `def f(x=[])` / `={}` → default to `None`, build inside.
33
+ - **Bare `except:` / `except Exception: pass`** → catch the specific type, log, re-raise or handle.
34
+ - **Late-binding closure in a loop** capturing the loop variable → bind explicitly.
35
+
36
+ ### Critical — Boundary & security
37
+ - **Unvalidated input** used as a trusted shape → a Pydantic model at the boundary, not a raw dict.
38
+ - **Injection**: f-string/`%`-built SQL or `subprocess`/`os.system` with user input → parameterise / `shlex`, never interpolate.
39
+ - **`eval`/`exec`/`pickle`** on untrusted data; hardcoded secrets.
40
+
41
+ ### High — ArkaOS core standard
42
+ - **Missing type hints** on a public signature → hint params and return.
43
+ - **A function over 30 lines** or nesting past 3 → decompose (`.claude/rules/python-core.md`).
44
+ - **Pydantic misuse**: validation logic in a route instead of a `field_validator`; a model that admits an illegal state.
45
+ - **Dataclass over Pydantic** where validation is needed; a broad `dict`/`Any` where a model belongs.
46
+
47
+ ### High — Idiom
48
+ - A manual index loop where a comprehension/`enumerate` reads clearer; a `try` used for flow control; string concatenation in a hot loop.
49
+
50
+ ## Process
51
+
52
+ 1. `git diff -- '*.py'` to scope the change.
53
+ 2. Run `ruff`/`mypy`/`pytest` if configured — read the output, do not just note their absence.
54
+ 3. Read each changed function against the priorities, correctness traps first.
55
+
56
+ ## Proactive Triggers
57
+
58
+ Surface these WITHOUT being asked:
59
+
60
+ - a mutable default argument in the diff → the shared-state bug across calls
61
+ - a `dict` passed through several layers as if typed → the Pydantic model that should guard the boundary
62
+ - a function that grew past 30 lines in the diff → the seam to split it on
63
+
64
+ ## Output
65
+
66
+ ```markdown
67
+ ## Python Review
68
+
69
+ **Scope:** {changed Python}
70
+ **Verdict:** {APPROVED / CHANGES REQUESTED}
71
+
72
+ ### Critical
73
+ - [ ] {file}:{line} — {the trap} → {the fix}
74
+
75
+ ### High (ArkaOS standard)
76
+ - [ ] {file}:{line} — {the convention broken} → {the fix}
77
+
78
+ ### Positive
79
+ {what is idiomatic and well-typed}
80
+ ```
@@ -13,9 +13,7 @@ description: >
13
13
  dev/pr-test-analyzer wins.
14
14
  allowed-tools: [Read, Grep, Glob]
15
15
  metadata:
16
- origin: ecc-derived
17
- source: https://github.com/affaan-m/ecc
18
- license: MIT
16
+ origin: arkaos
19
17
  ---
20
18
 
21
19
  # Silent Failure Hunter — `/dev silent-failure-hunter`
@@ -12,9 +12,7 @@ description: >
12
12
  schema of a new feature -> dev/db-design or dev/ddd-model wins.
13
13
  allowed-tools: [Read, Grep, Glob]
14
14
  metadata:
15
- origin: ecc-derived
16
- source: https://github.com/affaan-m/ecc
17
- license: MIT
15
+ origin: arkaos
18
16
  ---
19
17
 
20
18
  # Type Design Analyzer — `/dev type-design-analyzer`
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: dev/typescript-review
3
+ description: >
4
+ TypeScript/Node review for the holes the compiler waves through — `any`
5
+ and unsafe casts, unhandled promise rejections, missing input validation
6
+ at the boundary, and injection in queries or shell calls — with the fix
7
+ each needs. TRIGGER: "/dev typescript-review", "review this TS", "review
8
+ the Node", "revê o TypeScript", "revê este endpoint Node", "isto está
9
+ type-safe?", any diff touching *.ts/*.tsx server or API code. SKIP:
10
+ language-agnostic pre-merge review -> dev/code-review wins; React/Vue
11
+ component rendering bugs -> dev/vue-review or dev/click-path-audit wins;
12
+ type-design depth -> dev/type-design-analyzer wins.
13
+ allowed-tools: [Read, Grep, Glob, Bash]
14
+ metadata:
15
+ origin: arkaos
16
+ ---
17
+
18
+ # TypeScript Review — `/dev typescript-review`
19
+
20
+ > **Agent:** Vera (Node.js / TypeScript Backend Specialist) | **Framework:** Type safety, async correctness, boundary validation
21
+
22
+ TypeScript's guarantees stop at the edges of the program, and that is
23
+ where the bugs get in: an `any` erases every check downstream, a JSON
24
+ body typed as its interface is a lie until something validates it, a
25
+ floating promise swallows the error the caller needed. This review reads
26
+ a TS diff for the places the type system was told to look away, and for
27
+ the async and boundary mistakes no compiler flags.
28
+
29
+ ## Review Priorities
30
+
31
+ ### Critical — Type safety holes
32
+ - **`any` / `as` casts** on external data → validate into a real type (Zod, a type guard); an `any` is an unchecked check for everything it touches.
33
+ - **Non-null `!`** on a value that can be null at runtime → handle the null.
34
+ - **`@ts-ignore` / `@ts-expect-error`** hiding a real type error → fix the type, do not silence it.
35
+
36
+ ### Critical — Async correctness
37
+ - **Floating promise**: an `async` call with no `await` and no `.catch` → the rejection is lost.
38
+ - **`await` in a loop** where `Promise.all` is correct → serial latency; and the reverse, unbounded `Promise.all` over a large list.
39
+ - **Missing try/catch** around an `await` on I/O, or a catch that swallows.
40
+
41
+ ### Critical — Boundary
42
+ - **Unvalidated input**: a request body/query/param used as its TS type with no runtime schema → validate at the boundary.
43
+ - **Injection**: string-built SQL or `exec`/`child_process` with user input → parameterise / sanitise.
44
+ - **Secrets**: hardcoded keys; secrets logged.
45
+
46
+ ### High — Standards
47
+ - Public function signatures untyped or returning inferred `any`.
48
+ - `Promise<void>` swallowing a result the caller needs; error thrown as a bare string.
49
+ - Mutating a shared object where an immutable update belongs.
50
+
51
+ ## Process
52
+
53
+ 1. `git diff -- '*.ts' '*.tsx'` to scope the change.
54
+ 2. Run `tsc --noEmit` and the linter if configured — read the output.
55
+ 3. Read each changed handler/service for the priorities, type holes first.
56
+
57
+ ## Proactive Triggers
58
+
59
+ Surface these WITHOUT being asked:
60
+
61
+ - a request body used as `req.body as SomeType` with no validation → the boundary hole and the schema that closes it
62
+ - an `async` function called with no `await`/`.catch` → the floating rejection
63
+ - an `any` introduced in the diff → what it stops the compiler from checking downstream
64
+
65
+ ## Output
66
+
67
+ ```markdown
68
+ ## TypeScript Review
69
+
70
+ **Scope:** {changed TS}
71
+ **Verdict:** {APPROVED / CHANGES REQUESTED}
72
+
73
+ ### Critical
74
+ - [ ] {file}:{line} — {the hole} → {the fix}
75
+
76
+ ### High
77
+ - [ ] {file}:{line} — {the issue} → {the fix}
78
+
79
+ ### Positive
80
+ {what is genuinely type-safe and correct}
81
+ ```
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: dev/vue-review
3
+ description: >
4
+ Vue 3 / Nuxt review for the framework's own traps — lost reactivity,
5
+ SSR hydration mismatches, missing keys, uncleaned watchers, and props
6
+ mutated in place — with the fix each needs. Composition API and
7
+ TypeScript assumed. TRIGGER: "/dev vue-review", "review this Vue",
8
+ "review the Nuxt", "revê este componente Vue", "revê o composable",
9
+ "porque é que a reactividade não funciona?", any diff touching
10
+ *.vue/composables. SKIP: language-agnostic review -> dev/code-review
11
+ wins; a handler-ordering/state-cancellation bug -> dev/click-path-audit
12
+ wins; visual/brand review -> brand/design-review wins.
13
+ allowed-tools: [Read, Grep, Glob]
14
+ metadata:
15
+ origin: arkaos
16
+ ---
17
+
18
+ # Vue Review — `/dev vue-review`
19
+
20
+ > **Agent:** Diana (Senior Frontend Developer) | **Framework:** Vue 3 Composition API, Nuxt SSR, reactivity correctness
21
+
22
+ Most Vue bugs are not wrong logic — they are the reactivity system doing
23
+ exactly what you told it, which was not what you meant. Destructure a
24
+ `reactive` object and the binding is gone; read a value during SSR that
25
+ only exists on the client and hydration tears; forget a `:key` and the
26
+ list reuses the wrong DOM. This review reads a Vue/Nuxt diff for those
27
+ framework-specific traps, on the assumption of Composition API and
28
+ TypeScript throughout.
29
+
30
+ ## Review Priorities
31
+
32
+ ### Critical — Reactivity
33
+ - **Destructured reactivity**: `const { x } = reactive(...)` or a destructured prop → `toRefs`/`toRef`, or access through the object; the destructured copy is inert.
34
+ - **Ref unwrapped wrong**: `.value` missing in script, or added in template; a `ref` stored in a plain object it is read from without unwrapping.
35
+ - **Prop mutated in place** → emit an event or use a local copy; props are one-way.
36
+
37
+ ### Critical — SSR / Nuxt hydration
38
+ - **Client-only value read during SSR** (`window`, `localStorage`, `Date.now()` in setup) → guard with `import.meta.client`/`onMounted`; the mismatch tears hydration.
39
+ - **Non-deterministic render** between server and client (random, unstable order).
40
+ - **Data fetched without `useAsyncData`/`useFetch`** where SSR needs it → double fetch or hydration gap.
41
+
42
+ ### High — Correctness
43
+ - **Missing `:key`** on a `v-for`, or `:key="index"` on a reorderable list → wrong-DOM reuse.
44
+ - **Watcher/interval/listener not cleaned up** in `onUnmounted` → leak.
45
+ - **`v-if` + `v-for` on the same element**; heavy work in a computed with side effects.
46
+
47
+ ### High — Standards
48
+ - Options API in new code where the project is Composition API; `any`-typed props; a composable that is not prefixed `use` or leaks state across instances.
49
+
50
+ ## Process
51
+
52
+ 1. `git diff -- '*.vue'` plus changed composables to scope the change.
53
+ 2. Read each component's `setup`/template against the priorities, reactivity first.
54
+ 3. Trace any SSR-sensitive value from setup to template.
55
+
56
+ ## Proactive Triggers
57
+
58
+ Surface these WITHOUT being asked:
59
+
60
+ - a destructured `reactive`/props in the diff → the binding that is now dead and the `toRefs` fix
61
+ - a `window`/`localStorage`/`Date` read in `setup` of an SSR page → the hydration mismatch it causes
62
+ - a `v-for` with no `:key` or a keyed index on a list that reorders → the DOM-reuse bug
63
+
64
+ ## Output
65
+
66
+ ```markdown
67
+ ## Vue Review
68
+
69
+ **Scope:** {changed components / composables}
70
+ **Verdict:** {APPROVED / CHANGES REQUESTED}
71
+
72
+ ### Critical
73
+ - [ ] {file}:{line} — {the reactivity/SSR trap} → {the fix}
74
+
75
+ ### High
76
+ - [ ] {file}:{line} — {the issue} → {the fix}
77
+
78
+ ### Positive
79
+ {what handles reactivity and SSR correctly}
80
+ ```
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_meta": {
3
3
  "generator": "scripts/marketplace_gen.py",
4
- "version": "4.18.0",
4
+ "version": "4.19.0",
5
5
  "marketplace": "arkaos"
6
6
  },
7
7
  "structural": {
@@ -580,9 +580,7 @@
580
580
  ],
581
581
  "collision": false,
582
582
  "provenance": {
583
- "origin": "ecc-derived",
584
- "source": "https://github.com/affaan-m/ecc",
585
- "license": "MIT"
583
+ "origin": "arkaos"
586
584
  }
587
585
  },
588
586
  "code-review": {
@@ -1438,6 +1436,19 @@
1438
1436
  "origin": "arkaos"
1439
1437
  }
1440
1438
  },
1439
+ "laravel-review": {
1440
+ "depts": [
1441
+ "dev"
1442
+ ],
1443
+ "curated": false,
1444
+ "plugins": [
1445
+ "arkaos-dev@arkaos"
1446
+ ],
1447
+ "collision": false,
1448
+ "provenance": {
1449
+ "origin": "arkaos"
1450
+ }
1451
+ },
1441
1452
  "launch-execute": {
1442
1453
  "depts": [
1443
1454
  "saas"
@@ -2127,9 +2138,7 @@
2127
2138
  ],
2128
2139
  "collision": false,
2129
2140
  "provenance": {
2130
- "origin": "ecc-derived",
2131
- "source": "https://github.com/affaan-m/ecc",
2132
- "license": "MIT"
2141
+ "origin": "arkaos"
2133
2142
  }
2134
2143
  },
2135
2144
  "premortem": {
@@ -2238,6 +2247,19 @@
2238
2247
  "origin": "arkaos"
2239
2248
  }
2240
2249
  },
2250
+ "python-review": {
2251
+ "depts": [
2252
+ "dev"
2253
+ ],
2254
+ "curated": false,
2255
+ "plugins": [
2256
+ "arkaos-dev@arkaos"
2257
+ ],
2258
+ "collision": false,
2259
+ "provenance": {
2260
+ "origin": "arkaos"
2261
+ }
2262
+ },
2241
2263
  "quality-management": {
2242
2264
  "depts": [
2243
2265
  "ops"
@@ -2587,9 +2609,7 @@
2587
2609
  ],
2588
2610
  "collision": false,
2589
2611
  "provenance": {
2590
- "origin": "ecc-derived",
2591
- "source": "https://github.com/affaan-m/ecc",
2592
- "license": "MIT"
2612
+ "origin": "arkaos"
2593
2613
  }
2594
2614
  },
2595
2615
  "skill-audit": {
@@ -2891,9 +2911,20 @@
2891
2911
  ],
2892
2912
  "collision": false,
2893
2913
  "provenance": {
2894
- "origin": "ecc-derived",
2895
- "source": "https://github.com/affaan-m/ecc",
2896
- "license": "MIT"
2914
+ "origin": "arkaos"
2915
+ }
2916
+ },
2917
+ "typescript-review": {
2918
+ "depts": [
2919
+ "dev"
2920
+ ],
2921
+ "curated": false,
2922
+ "plugins": [
2923
+ "arkaos-dev@arkaos"
2924
+ ],
2925
+ "collision": false,
2926
+ "provenance": {
2927
+ "origin": "arkaos"
2897
2928
  }
2898
2929
  },
2899
2930
  "unit-economics": {
@@ -3024,6 +3055,19 @@
3024
3055
  "origin": "arkaos"
3025
3056
  }
3026
3057
  },
3058
+ "vue-review": {
3059
+ "depts": [
3060
+ "dev"
3061
+ ],
3062
+ "curated": false,
3063
+ "plugins": [
3064
+ "arkaos-dev@arkaos"
3065
+ ],
3066
+ "collision": false,
3067
+ "provenance": {
3068
+ "origin": "arkaos"
3069
+ }
3070
+ },
3027
3071
  "webinar-funnel": {
3028
3072
  "depts": [
3029
3073
  "landing"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "4.18.0",
3
+ "version": "4.19.0",
4
4
  "description": "The Operating System for AI Agent Teams",
5
5
  "type": "module",
6
6
  "bin": {
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkaos-core"
3
- version = "4.18.0"
3
+ version = "4.19.0"
4
4
  description = "Core engine for ArkaOS — The Operating System for AI Agent Teams"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}