At a glance
- Problem
- Teams need to review agent instructions before installation without sending private skill files to a server.
- My contribution
- I designed and shipped a local TypeScript analyzer shared by the browser and CLI, with reviewed instructions kept inert.
- Outcome
- A live, open-source review tool with inspectable findings and exports; its scores do not establish safety or model performance.
An optional working example
What does a good score actually prove?
Review two well-structured instructions. Find the red flag a perfect structure score can hide.
A score is useful when you can see both its reasons and its limits.

The browser interface and the CLI are two entry points over one pure analysis layer, which produces the findings a review exports.
In words
- The browser interface (src/components) is one entry point; the CLI (scripts/skillcheck.mjs) is the other.
- Both call the same analyzeReview entry point in src/domain.
- That layer is pure logic with no React: diff, quality, injection, and review checks.
- Its findings and decisions export as versioned JSON or Markdown.
- 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
01decision
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.
TradeoffWith no backend there is no server-side record of a review; the exported JSON or Markdown file is the record.
02decision
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.
TradeoffDeterministic rules are legible and reproducible, and they miss anything a rule does not describe.
03decision
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.
What you can verify
- Inspect the pure analysis layer and its co-located tests in src/domain.
- Run the same input through the browser and the shared CLI, which imports the same analyzeReview entry point.
- Inspect the 21 author-labeled synthetic calibration cases, including false positives and missed patterns.
- Every line is scanned against ten categories of known injection patterns, listed in the README and implemented as one rule file per category.
Source and release links checked .
Scope and limits
This is static, heuristic analysis. Scores are not measured task success, a security certification, or a substitute for reviewing the instructions and testing them with the intended model.
A short walkthrough
- 01
Load the built-in review example or select a skill folder with local text references.
- 02
Edit the candidate and inspect the quality findings, injection warnings, and differences.
- 03
Record your finding decisions and export the review for a pull request.