Skip to content

Commit ac3a7e1

Browse files
committed
chore: add agents and contributing md files
1 parent 942499d commit ac3a7e1

4 files changed

Lines changed: 103 additions & 1 deletion

File tree

AGENTS.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# AGENTS.md
2+
3+
## Project Overview
4+
5+
- `execbox` is a Node.js 22+ npm workspace that publishes the `@execbox/*` package family.
6+
- Core source lives under `packages/*/src`, tests live under `packages/*/__tests__`, runnable examples live under `examples/`, and the public docs site lives under `docs/`.
7+
- The workspace currently contains `@execbox/core`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/remote`, `@execbox/process`, `@execbox/worker`, and `@execbox/isolated-vm`.
8+
- Keep changes aligned with existing package boundaries. Prefer changing the owning package instead of introducing cross-package shortcuts.
9+
10+
## Setup Commands
11+
12+
- Install dependencies: `npm ci`
13+
- Lint: `npm run lint`
14+
- Type-check: `npm run typecheck`
15+
- Test default workspace lanes: `npm test`
16+
- Build published packages: `npm run build`
17+
- Build docs site: `npm run docs:build`
18+
- Run security-focused suites: `npm run test:security`
19+
- Run isolated-vm tests only when needed: `npm run test:isolated-vm`
20+
- Run the full isolated-vm verification lane: `npm run verify:isolated-vm`
21+
22+
## Codebase Conventions
23+
24+
- Do not edit generated `dist/` output under `packages/*/dist`; build artifacts are produced from source.
25+
- Preserve the existing ESM + TypeScript workspace structure and root script orchestration.
26+
- When you change exported APIs in `packages/*/src`, keep JSDoc in sync. ESLint requires JSDoc coverage for exported package symbols.
27+
- Prefer inline type imports where possible; the ESLint config enforces `@typescript-eslint/consistent-type-imports`.
28+
- Update examples or docs when you change public package behavior, developer workflow, or recommended runtime choices.
29+
30+
## Testing Instructions
31+
32+
- For most code changes, run `npm run format:check`, `npm run lint`, `npm run typecheck`, `npm test`, and `npm run build`.
33+
- If you change docs site content, navigation, or VitePress config, also run `npm run docs:build`.
34+
- If you touch execution boundaries, timeout handling, abort propagation, schema validation, or log/memory controls, also run `npm run test:security`.
35+
- If you touch `@execbox/isolated-vm` or codepaths guarded by `VITEST_INCLUDE_ISOLATED_VM`, run `npm run test:isolated-vm` or `npm run verify:isolated-vm`.
36+
37+
## Security Notes
38+
39+
- The provider and tool surface is the real capability boundary. Treat additions to provider exposure as security-relevant changes.
40+
- Preserve JSON-only boundaries, schema validation, bounded logs, timeout handling, memory controls, and abort propagation semantics.
41+
- Do not describe in-process runtimes as a hard security boundary for hostile or multi-tenant code. The current project security model is documented in `docs/security.md`.
42+
43+
## Release Notes
44+
45+
- Use Conventional Commits for git commit messages, for example `docs: add agent and contributor guides` or `fix(worker): handle timeout classification`.
46+
- Published package releases are managed with Changesets and GitHub Actions.
47+
- Add a `.changeset/*.md` entry when a change affects published package behavior, public APIs, or release notes for one or more `@execbox/*` packages.
48+
- Skip a changeset for docs-only, examples-only, CI-only, or internal maintenance changes that do not affect published package behavior.
49+
50+
## Useful References
51+
52+
- Start with `README.md` for the package map.
53+
- Use `docs/getting-started.md` for install and example expectations.
54+
- Use `docs/security.md` and `docs/architecture/README.md` before changing execution boundaries or runtime claims.
55+
- For the human-oriented contribution workflow, see `CONTRIBUTING.md`.

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AGENTS.md

CONTRIBUTING.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Contributing
2+
3+
Thanks for contributing to `execbox`.
4+
5+
This guide is for both humans and coding agents. Agent-specific operating instructions live in `AGENTS.md`.
6+
7+
## Development Setup
8+
9+
- Use Node.js 22 or newer. CI runs on Node 22 and Node 24.
10+
- Install dependencies with `npm ci`.
11+
- The repo is an npm workspace. Packages live under `packages/`, runnable examples live under `examples/`, and the public docs site lives under `docs/`.
12+
13+
## Working In This Repo
14+
15+
- Make changes in the package that owns the behavior you are updating.
16+
- Keep exported API documentation current when you change exported symbols in `packages/*/src`; the ESLint config requires JSDoc for exported package APIs.
17+
- Update tests with behavior changes.
18+
- Update examples and docs when public behavior, recommended setup, or runtime tradeoffs change.
19+
20+
## Verification
21+
22+
- General code changes: `npm run format:check`, `npm run lint`, `npm run typecheck`, `npm test`, and `npm run build`
23+
- Docs site changes: `npm run docs:build`
24+
- Security or execution-boundary changes: `npm run test:security`
25+
- `@execbox/isolated-vm` changes: `npm run test:isolated-vm` or `npm run verify:isolated-vm`
26+
27+
Choose the smallest verification set that covers your change, and include the commands you ran in your PR or handoff notes when the context would help reviewers.
28+
29+
## Changesets
30+
31+
- Add a `.changeset/*.md` file for user-facing changes to published `@execbox/*` packages.
32+
- Skip changesets for docs-only, examples-only, CI-only, or internal refactors that do not change published package behavior.
33+
- Keep the changeset summary focused on the externally visible change.
34+
35+
## Commits
36+
37+
- Use Conventional Commits for git commit messages.
38+
- Pick the smallest truthful type for the primary change, such as `docs`, `fix`, `feat`, `refactor`, `test`, or `ci`.
39+
- Keep the subject concise and imperative, for example `docs: document contributor workflow`.
40+
41+
## Pull Requests
42+
43+
- Keep each PR focused on one change or closely related set of changes.
44+
- Mention which packages, examples, or docs areas are affected.
45+
- Call out any docs, example, test, or changeset updates that are part of the change.
46+
- If you change runtime boundaries, security-sensitive behavior, or public API expectations, say so explicitly in the PR description.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ Runnable examples live in [`examples/`](./examples/) and are indexed in [`exampl
3131
## Docs
3232

3333
- [Public Docs](https://execbox.aallam.com)
34+
- [Getting Started Guide](./docs/getting-started.md)
3435
- [Execbox Architecture Overview](./docs/architecture/README.md)
35-
- [QuickJS Pooling Baseline](./docs/performance/quickjs-pooling-baseline.md)

0 commit comments

Comments
 (0)