Thanks for helping improve Artifact Review. Changes should preserve its core properties: self-contained installation, local-first operation, clear delivery acknowledgements, and an agent-agnostic workflow.
For security issues, follow SECURITY.md instead of opening a public pull request with exploit details.
Install:
- Node.js 22.20 or newer;
- Python 3.9 or newer; and
- a modern browser.
Then:
npm ci
npm run build
npm testThe runtime installed with the skill uses Python's standard library and does
not require node_modules. Node dependencies are development inputs used to
bundle the offline whiteboard and run browser tests.
Everything required at runtime must live under
skills/artifact-review/. The skills CLI copies that directory as the
installable payload.
When changing the skill:
- resolve scripts and assets relative to
SKILL.mdor the executing script; - never add paths tied to one developer, repository checkout, or agent;
- keep the payload usable by Codex, Claude Code, and other Agent Skills clients;
- do not require a global
arevcommand; - keep generated runtime assets text-safe for remote skill installation;
- keep user artifacts outside the installed skill directory;
- keep every test and fixture under
tests/, never in the payload; and - do not commit
__pycache__, local session state, or test output.
The large whiteboard JavaScript and CSS files are generated artifacts. Change
their build inputs rather than editing bundles by hand. Run npm run build and
commit the regenerated browser assets and third-party notices.
skills/artifact-review/ the complete installable skill payload
tooling/ asset and notice generation
tests/ integration and browser tests
docs/ user guides, architecture notes, and implementation records
PRODUCT.md product behavior and constraints
DESIGN.md interaction and visual design direction
User-facing setup and operation belong in README.md and the curated guides
under docs/. Keep implementation rules and pull request requirements here.
Run the complete suite before submitting:
npm run build
npm test
npm run test:e2enpm test runs the Python runtime tests. npm run test:e2e runs the Gherkin
scenarios and the latency check through Playwright.
All test code lives under tests/:
features/ Gherkin scenarios, the behavior the review surface owes
steps/ the step vocabulary those scenarios are written in
support/ Playwright fixtures, page objects, and the arev driver
fixtures/ HTML artifacts the tests open
runtime/ Python tests for the skill runtime
perf.spec.js delivery latency check
run.sh runs runtime/
Write new browser coverage as a scenario under tests/features/. Keep every
selector in a page object under tests/support/, never in a step or a feature
file. Step definitions use regular expressions with capture groups, and name
the allowed values wherever a fixed set exists, so a typo becomes an undefined
step instead of a silent pass.
The efficiency audit has its own browser measurement script,
docs/skill-efficiency-audit/bench-runtime.mjs. It is deliberately
self-contained and is run by hand through docs/skill-efficiency-audit/bench.sh,
not by either test command.
Also smoke-test the installable directory when changing packaging or metadata:
npx skills add . --list
INSTALL_TEST_DIR="$(mktemp -d)"
cd "$INSTALL_TEST_DIR"
npx skills add /absolute/path/to/artifact-review \
--skill artifact-review \
--agent codex claude-code \
--copy \
--yes
python3 .agents/skills/artifact-review/scripts/arev.py doctorUse a temporary directory for this check. Do not install a development copy over a skill you rely on.
Changes to review delivery should test the relevant observable transition: Draft, Sending, Sent, Received, Answered, or Failed. Performance claims should distinguish server transport and poll pickup from model reasoning and edit turnaround. Applied is a direct-edit outcome rather than a delivery transition.
Keep each pull request focused. Include:
- the user-visible problem and intended behavior;
- screenshots or a short recording for interaction changes;
- tests for regressions and new behavior;
- regenerated assets and notices, when applicable; and
- documentation updates for changed commands, state, or security assumptions.
Confirm that no artifact, review token, local path, credential, or private feedback was included in the change.
Use GitHub Releases for user-visible updates. A merge to main is not itself
an update notification and does not replace files that users already installed.
For a release:
- Merge the focused pull request and wait for
mainCI to pass. - Confirm
package.json,arev.py, andserver.pycarry the release version. - Create a
vX.Y.ZGitHub Release frommainwith generated release notes. - State any compatibility change and whether users need to restart their coding agent.
Keep distribution agent-agnostic. Publish the single
skills/artifact-review/ directory defined by the Agent Skills standard.
Do not add provider-specific copies, a background update check, or a custom
installer without a demonstrated compatibility need.