Skip to content

Developer tooling · static analysis

Skillcheck

Static skill review, entirely in the browser

Make an agent skill easier to review before it becomes part of a workflow.

  • Public source
  • Live

Pending release

The review workflow shown above

Folder intake, the editable comparison, finding decisions, and the exports were merged into the public source on September 13, 2026. The live app may still show the earlier release until it is redeployed.

My role: Product design, analyzer architecture, implementation, and delivery.

  • React 19
  • TypeScript (strict)
  • Vite
  • Deterministic checks
  • Zero backend

At a glance

Problem
Teams adopting agent skills need a quick, inspectable review of instructions before installing them. Skill files can also contain internal instructions that should not leave the machine.
My contribution
Product design, analyzer architecture, implementation, and delivery: a pure TypeScript analysis layer shared by the browser and a CLI, with the interface kept separate so a reviewed file is never executed.
Outcome
Live and open source: deterministic quality checks and injection-pattern analysis, versioned exports for pull requests, and an analyzer covered by tests. Findings are review aids, not measured model performance.
Skillcheck upgrade preview: a populated comparison with heuristic score changes from 89 to 94, an injection warning, and report exports
Product interface. Features on a live deployment can differ from the latest source revision.
Skillcheck's shared analysis layerA browser interface and a command-line script both call analyzeReview in src/domain, a pure TypeScript layer covering diff, quality, injection, and review checks. It produces findings and decisions that export as JSON or Markdown, and calibration fixtures exercise it in tests.BrowserReact UIsrc/componentsCLIscripts/skillcheck.mjsanalyzeReviewsrc/domainPure logic, no Reactdiff · qualityinjection · reviewtestsCalibration fixtures21 labeled syntheticcases (synthetic-1.0)Findings + decisionsJSON / Markdown export

The browser interface and the CLI are two entry points over one pure analysis layer, which produces the findings a review exports.

In words

  1. The browser interface (src/components) is one entry point; the CLI (scripts/skillcheck.mjs) is the other.
  2. Both call the same analyzeReview entry point in src/domain.
  3. That layer is pure logic with no React: diff, quality, injection, and review checks.
  4. Its findings and decisions export as versioned JSON or Markdown.
  5. Calibration fixtures, 21 labeled synthetic cases, exercise the domain layer in tests.

Derived from the public repository layout (src/domain, src/components, scripts/skillcheck.mjs).

Engineering decisions

  1. 01

    Keep the analysis local

    Skill files can contain internal instructions. Analysis runs in the browser, with a pure TypeScript domain layer separated from the interface. Reviewing a file does not execute its instructions.

    Tradeoff

    With no backend there is no server-side record of a review; the exported JSON or Markdown file is the record.

  2. 02

    Expose the reasons behind a score

    Deterministic checks flag structure, clarity, actionability, completeness, and efficiency. An editable comparison, line differences, and finding decisions connect a changed instruction to a reviewable result. Versioned JSON and Markdown exports preserve the review.

    Tradeoff

    Deterministic rules are legible and reproducible, and they miss anything a rule does not describe.

  3. 03

    Treat detection as a review aid

    Injection analysis uses patterns, normalization, and context-aware damping. A reassuring score cannot establish that a skill is safe or that a model will follow it.

A short walkthrough

  1. 01

    Load the built-in review example or select a skill folder with local text references.

  2. 02

    Edit the candidate and inspect the quality findings, injection warnings, and differences.

  3. 03

    Record your finding decisions and export the review for a pull request.

Contact

Let's build something that ships.

Open to conversations about senior and staff frontend work, AI application engineering, and hard product problems. The fastest route is email.

© 2026 Abdallah Arslan · Atlanta, GA · Remote

React 19 · TypeScript · Tailwind · WebGL · d dark mode · ⌘K commands