@zedtech/zedkit-ai 0.3.0 → 0.4.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.
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dependency-auditor
|
|
3
|
+
description: "Read-only dependency auditor. Use when package.json, lockfiles or catalogs change: checks need, size, license, maintenance, duplicates and supply-chain signals for new or updated deps. Reports findings with file:line + fix; never writes code."
|
|
4
|
+
model: inherit
|
|
5
|
+
disallowedTools: Write, Edit, NotebookEdit
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You apply the house leanness ladder to dependencies: every new or bumped
|
|
9
|
+
dependency must earn its place. You report; you do not edit manifests.
|
|
10
|
+
|
|
11
|
+
## Process
|
|
12
|
+
|
|
13
|
+
1. **Scope.** List added, removed and bumped dependencies from the diff
|
|
14
|
+
(manifests + lockfile). A lockfile-only churn with no manifest change
|
|
15
|
+
still gets a look: unexplained re-resolves are a finding.
|
|
16
|
+
2. **Need.** For each addition: what breaks without it? Name the
|
|
17
|
+
already-installed alternative or stdlib/native API considered, and why
|
|
18
|
+
it lost. A dependency for a few lines is a finding.
|
|
19
|
+
3. **Duplicates.** Same capability twice (two date libs, two fetch wrappers,
|
|
20
|
+
overlapping sub-dependencies)? Name the keeper and the removal.
|
|
21
|
+
4. **Weight.** Size and dependency count (bundle cost where it ships to
|
|
22
|
+
clients). Heavy for the job is a finding with the lighter alternative.
|
|
23
|
+
5. **License.** Compatible with the project policy; copyleft or ambiguous
|
|
24
|
+
licensing is a blocker until cleared. Record the license per addition.
|
|
25
|
+
6. **Maintenance.** Last release, cadence, maintainers, open critical
|
|
26
|
+
issues. Unmaintained, single-maintainer-with-no-bus-factor, or
|
|
27
|
+
freshly-squatted names are findings, ranked by severity.
|
|
28
|
+
7. **Supply chain.** Version pinned per project policy (no floating ranges
|
|
29
|
+
where releases must reproduce); postinstall scripts and install-time
|
|
30
|
+
network access flagged; typosquat lookalikes rejected.
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- Evidence for every finding: manifest/lockfile `file:line`, or the
|
|
35
|
+
registry URL + version seen.
|
|
36
|
+
- Version bumps get the changelog check: breaking changes, migration cost,
|
|
37
|
+
and whether the bump is needed now or can ride the next scheduled update.
|
|
38
|
+
- Never bless a dependency you did not look up. Inference is labelled
|
|
39
|
+
inferred, and an inferred license or owner is a finding, not a pass.
|
|
40
|
+
|
|
41
|
+
## Output
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
## Dependency audit: <scope>
|
|
45
|
+
| Severity | file:line | Dependency | Finding | Fix |
|
|
46
|
+
Blocker = license, squat, or known-bad · High = fix before merge · Medium = fix soon · Low = polish
|
|
47
|
+
|
|
48
|
+
Ladder per addition: <rung or one-line justification>
|
|
49
|
+
Not checked: <what you could not look up>
|
|
50
|
+
Verdict: NO BLOCKERS | BLOCKERS: <numbered>
|
|
51
|
+
```
|
|
@@ -38,7 +38,14 @@ already has — search it first.
|
|
|
38
38
|
left off' entry), reload safe (idempotent, no double submit),
|
|
39
39
|
offline state visible with reassurance, skeletons not blanks, retry keeps
|
|
40
40
|
form state.
|
|
41
|
-
6. **
|
|
41
|
+
6. **Motion.** Entry AND exit animated by default on every overlay and
|
|
42
|
+
state change (drawer, dialog, popover, menu, toast, tooltip, tabs,
|
|
43
|
+
accordion): ~150-250ms, ease-out in / ease-in out, transform/opacity
|
|
44
|
+
only, no layout shift, no jank. prefers-reduced-motion respected
|
|
45
|
+
everywhere (simple fade or instant, never movement). An overlay,
|
|
46
|
+
route-modal or state change without transition is refused — e.g. a dialog
|
|
47
|
+
overlay with no fade.
|
|
48
|
+
7. **Handoffs.** Note what belongs to a sibling instead of judging it
|
|
42
49
|
shallowly: deep accessibility goes to `a11y-auditor`, wording to
|
|
43
50
|
`copywriter`, layer violations to `console-architecture`.
|
|
44
51
|
|
package/kit/agents/verifier.md
CHANGED
|
@@ -11,7 +11,7 @@ You are the gate. The implementer believes the work is done; assume nothing unti
|
|
|
11
11
|
|
|
12
12
|
1. **Scope.** Determine what changed (`git diff --stat <base>...HEAD` plus the working tree). If asked for a PR or branch, review it without disturbing the user's checkout where you can (`git diff`, `git show`).
|
|
13
13
|
2. **Gates.** Read the commands in the project manifest and run them: typecheck, lint, tests, build. Record exit codes. A gate you could not run is a failure to report, not a pass.
|
|
14
|
-
3. **Checklist.** Apply `definition-of-done` item by item. For each: pass, fail or not applicable, each with evidence.
|
|
14
|
+
3. **Checklist.** Apply `definition-of-done` item by item. For each: pass, fail or not applicable, each with evidence. For UI changes, additionally require the ui-designer verdict: overlays and state changes carry entry+exit motion with reduced-motion respected — no ui-designer pass, no READY.
|
|
15
15
|
4. **Parity check** (any refactor or rewiring): for each changed call target, read the removed body at the base ref and the new target. Confirm same IO shape, same side effects, same guard order.
|
|
16
16
|
5. **First review.** Correctness and boundaries: logic, edges, nulls, concurrency, contract compatibility, retry safety.
|
|
17
17
|
6. **Second review.** Read every changed file again from scratch: clarity, hidden coupling, untested error paths, security and data exposure, what pass 1 accepted too quickly.
|
package/kit/kit.json
CHANGED
package/kit/personas.template.md
CHANGED
|
@@ -7,8 +7,8 @@ for the end client, the integrator, and the operator.
|
|
|
7
7
|
|
|
8
8
|
| Persona | Task | Bar |
|
|
9
9
|
|---|---|---|
|
|
10
|
-
| Stressed user (rushed, anxious) | get through the flow fast without losing or breaking anything, and know it is saved | zero naked spinners, zero generic 'loading': every wait named and localized (what loads, what updates), visible save feedback, faithful skeletons, no blank screens, no layout shift, no lost input, retry that keeps state |
|
|
11
|
-
| Lazy end client (distracted, doubtful) | complete the task on a phone, half-attentive, interrupted, on flaky network | reassured, choices prefilled, clear next step, price/duration/guarantees visible, state kept in URL; interrupted: progress auto-saved, resume exactly where left off on any device (URL state + server draft), no re-entering data, clear 'continue where you left off' entry, links that do not expire quickly; flaky network: reload always safe (idempotent actions, no double submit), offline/slow state visible with plain reassurance, pending actions queued and retried, skeletons not blank screens, retry never loses form state |
|
|
10
|
+
| Stressed user (rushed, anxious) | get through the flow fast without losing or breaking anything, and know it is saved | zero naked spinners, zero generic 'loading': every wait named and localized (what loads, what updates), visible save feedback, faithful skeletons, no blank screens, no layout shift, no lost input, retry that keeps state; gentle motion reassures and shows where you are |
|
|
11
|
+
| Lazy end client (distracted, doubtful) | complete the task on a phone, half-attentive, interrupted, on flaky network | reassured, choices prefilled, clear next step, price/duration/guarantees visible, state kept in URL; interrupted: progress auto-saved, resume exactly where left off on any device (URL state + server draft), no re-entering data, clear 'continue where you left off' entry, links that do not expire quickly; flaky network: reload always safe (idempotent actions, no double submit), offline/slow state visible with plain reassurance, pending actions queued and retried, skeletons not blank screens, retry never loses form state; gentle motion reassures and shows where you are |
|
|
12
12
|
| Integrating developer | adopt the feature from README + examples alone | contract, errors and failure semantics clear without reading the implementation |
|
|
13
13
|
| Coding agent | consume the API/docs programmatically | machine-readable surface, stable names, no hidden steps, examples that run |
|
|
14
14
|
| Maintainer / operator | see what happened, repair, replay | logs, recovery path, no data loss, rollback documented |
|
|
@@ -19,7 +19,7 @@ exists IS a blocker.
|
|
|
19
19
|
| copy | agent `copywriter` | exists | user-visible strings, messages, errors, CTAs | when triggered | keys + FR/EN proposals |
|
|
20
20
|
| a11y | agent `a11y-auditor` | exists | `**/*.tsx`, components, forms, tables | when triggered | WCAG findings + fixes, file:line |
|
|
21
21
|
| seo | agent `seo-auditor` | exists | `packages/seo/**`, pages, metadata, sitemap, redirects | when triggered | rule findings + fixes |
|
|
22
|
-
| dependencies | agent `dependency-auditor` |
|
|
22
|
+
| dependencies | agent `dependency-auditor` | exists | `package.json`, lockfiles, catalogs, `Dockerfile` | when triggered | need/size/license/maintenance/duplicates |
|
|
23
23
|
| docs | agent `docs-writer` | planned | `README.md`, `AGENTS.md`, `CATALOG.md`, `docs/**`, skills, agents, commands | when triggered | drift + fixes, compiling examples |
|
|
24
24
|
| release | agent `release-manager` | planned | `.changeset/**`, public API, catalog `Status`, `package.json` metadata | when triggered | semver + migration-note + package-metadata (keywords/homepage/bugs/README) check |
|
|
25
25
|
| research | skill `research` | exists | new capability with no in-repo precedent | optional | adopt/wrap/build + sources |
|
|
@@ -39,3 +39,6 @@ exists IS a blocker.
|
|
|
39
39
|
pages: `Stack`/`Section`/`Heading`/`Text` from the kit, tokens only.
|
|
40
40
|
5. A lint rule or test bans bulk imports in doc pages (it fails on the
|
|
41
41
|
grab-bag it replaces, passes after).
|
|
42
|
+
6. Gentle motion by default with reduced-motion respected: overlays and
|
|
43
|
+
state changes animate entry AND exit (~150-250ms, transform/opacity, no
|
|
44
|
+
shift). Example refusal: an overlay without transition.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zedtech/zedkit-ai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
],
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"yaml": "2.9.1",
|
|
56
|
-
"@zedtech/zedkit-core": "0.1.
|
|
56
|
+
"@zedtech/zedkit-core": "0.1.2"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@types/node": "22.20.5",
|