Skip to content

Commit ed893ce

Browse files
committed
Remove assistant-only repo docs
1 parent d8d4a2d commit ed893ce

7 files changed

Lines changed: 83 additions & 225 deletions

File tree

‎.gitignore‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ native/target/
55
*.node
66
bun.lock
77
yarn.lock
8+
package-lock.json
89
.DS_Store
910
.env
1011
.playwright-mcp/
12+
.factory/
13+
14+
# Local AI/editor instruction files
15+
AGENTS.md
16+
CLAUDE.md
17+
GEMINI.md
18+
COPILOT.md
19+
.cursorrules
20+
.clinerules

‎AGENTS.md‎

Lines changed: 0 additions & 114 deletions
This file was deleted.

‎CLAUDE.md‎

Lines changed: 0 additions & 28 deletions
This file was deleted.

‎CONTRIBUTING.md‎

Lines changed: 38 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,73 @@
11
# Contributing to Schrute
22

3-
Thank you for your interest in contributing to Schrute!
3+
Thank you for contributing.
44

5-
## Getting Started
5+
## Prerequisites
66

7-
### Prerequisites
8-
9-
- Node.js >= 22
7+
- Node.js 22 or newer
108
- Git
9+
- Playwright Chromium: `npx playwright install chromium`
1110

12-
### Setup
11+
## Setup
1312

1413
```bash
1514
git clone https://github.com/sheeki03/schrute.git
1615
cd schrute
1716
npm install
18-
npx playwright install chromium
1917
npm run build
2018
```
2119

22-
### Verify Setup
20+
## Verify Your Environment
2321

2422
```bash
25-
npx vitest run # All tests should pass
26-
npx tsc --noEmit # No type errors
27-
node dist/index.js doctor # Health check
23+
npm run lint
24+
npx vitest run
25+
node bin/schrute.cjs doctor
2826
```
2927

30-
## Development Workflow
28+
## Development Expectations
3129

32-
1. Create a feature branch from `main`
33-
2. Make your changes
34-
3. Run tests: `npx vitest run`
35-
4. Run type check: `npx tsc --noEmit`
36-
5. Submit a pull request
30+
- Keep changes focused. Prefer one feature or one fix per pull request.
31+
- Add or update tests for behavioral changes.
32+
- Update user-facing docs when behavior, flags, commands, or APIs change.
33+
- Route execution, browser, and skill behavior through the engine and existing repositories instead of adding side paths.
34+
- Keep error handling fail-closed. If an operation is unsafe or ambiguous, deny it and log the reason.
3735

38-
## Code Style
36+
## Repo Hygiene
3937

40-
- TypeScript strict mode
41-
- Fail-closed security: when in doubt, deny
42-
- Bare `catch` blocks must log the error (no silent swallowing)
43-
- Use `getLogger()` from `src/core/logger.ts` for logging
38+
- Do not commit local assistant/editor instruction files such as `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `COPILOT.md`, `.cursorrules`, or `.clinerules`.
39+
- Do not commit personal experiment artifacts or generated local assets unless they are intentionally part of the product.
40+
- Do not add package-manager lockfiles unless the project explicitly adopts one.
4441

45-
## Testing
42+
## Testing Notes
4643

47-
- Framework: vitest
48-
- Config objects in tests must include `daemon: { port: 19420, autoStart: false }`
49-
- Use the `makeTestConfig()` helper from `tests/helpers.ts`
50-
- Browser tests mock Playwright via `vi.mock('playwright')`
51-
- All tests must be deterministic (no timing-dependent assertions)
44+
- Tests use Vitest.
45+
- Prefer `makeTestConfig()` from `tests/helpers.ts` when a full config object is needed.
46+
- Browser-facing tests should mock Playwright unless the test is explicitly integration or E2E.
47+
- Keep tests deterministic. Avoid timing-sensitive assertions where possible.
5248

53-
### Running Tests
49+
## Useful Commands
5450

5551
```bash
56-
npx vitest run # All tests
57-
npx vitest run tests/unit/config.test.ts # Specific test
58-
npx vitest --watch # Watch mode
59-
npx vitest run --coverage # With coverage
52+
npm run build
53+
npm run lint
54+
npx vitest run
55+
npx vitest run tests/unit/engine.test.ts
56+
npx vitest --watch
6057
```
6158

62-
## Architecture Notes
63-
64-
- **Engine boundary**: All browser/skill operations go through Engine. Never bypass.
65-
- **Policy boundary**: 9 security gates on every execution. Never skip gates.
66-
- **Daemon boundary**: CLI connects to daemon via UDS. No direct engine access from CLI.
67-
- **Storage boundary**: All data access through repositories. Never raw SQL.
59+
## Pull Requests
6860

69-
## Pull Request Process
61+
Before opening a pull request:
7062

71-
1. Ensure all tests pass
72-
2. Update documentation if needed
73-
3. Add tests for new functionality
74-
4. Keep PRs focused — one feature or fix per PR
75-
5. Write descriptive commit messages
63+
1. Run the relevant tests and type checks.
64+
2. Update documentation if the change affects how Schrute is used or operated.
65+
3. Review the diff for accidental local files or generated artifacts.
66+
4. Write a clear pull request description explaining the behavior change and validation performed.
7667

77-
## Security
68+
## Security Issues
7869

79-
If you discover a security vulnerability, please see [SECURITY.md](SECURITY.md) for responsible disclosure instructions. Do NOT open a public issue for security vulnerabilities.
70+
If you discover a security vulnerability, follow [SECURITY.md](SECURITY.md). Do not open a public issue for undisclosed security bugs.
8071

8172
## License
8273

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Teach your AI a website once. After that, it can repeat the job much faster.
1010

1111
Schrute is for repeated website tasks.
1212

13-
It watches what happens in a real browser, learns the underlying network requests, and turns them into reusable tools. That means the first run can happen in the browser, but later runs can often skip the UI and go straight to the site's backend.
13+
It supports both paths: you can teach it by having it watch what happens in a real browser, or you can let it discover useful backend structure on its own when a site exposes it. Schrute can do either well, and it is up to you which path to use for a given site or task. Either way, it turns what it finds into reusable tools. That means the first run can happen in the browser, or you can start from direct discovery when that fits better, and later runs can often skip the UI and go straight to the site's backend.
1414

1515
If you keep asking an AI to do the same website task over and over, Schrute is the layer that helps it stop starting from scratch every time.
1616

‎SECURITY.md‎

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,56 @@
22

33
## Reporting a Vulnerability
44

5-
If you discover a security vulnerability in Schrute, please report it responsibly.
5+
Please report security issues privately.
66

7-
### How to Report
7+
### Preferred Channel
88

9-
1. **GitHub Security Advisories** (preferred): Use [GitHub Security Advisories](https://github.com/sheeki03/schrute/security/advisories/new) to privately report the vulnerability.
9+
Use [GitHub Security Advisories](https://github.com/sheeki03/schrute/security/advisories/new) to submit a private report.
1010

11-
2. **Email**: Send details to the repository maintainers via the email listed in the GitHub profile.
11+
### If Advisories Are Not Available
1212

13-
### What to Include
13+
Contact the maintainers privately through the repository's listed contact channels. Do not open a public GitHub issue for an undisclosed vulnerability.
1414

15-
- Description of the vulnerability
16-
- Steps to reproduce
17-
- Potential impact
18-
- Suggested fix (if any)
15+
### What To Include
1916

20-
### What to Expect
17+
- A clear description of the issue
18+
- Affected version, commit, or deployment context
19+
- Reproduction steps or a proof of concept
20+
- Expected impact
21+
- Any suggested mitigation or patch idea
2122

22-
- Acknowledgment within 48 hours
23-
- Status update within 7 days
24-
- We aim to release fixes within 30 days of confirmed vulnerabilities
23+
### Response Targets
24+
25+
- Initial acknowledgment within 48 hours
26+
- A status update within 7 days
27+
- A fix or mitigation plan as soon as the issue is confirmed and triaged
2528

2629
## Scope
2730

2831
### In Scope
2932

30-
- Authentication bypass in HTTP transport
31-
- SSRF via skill execution
32-
- Policy gate bypass
33-
- Credential leakage (auth tokens, cookies)
34-
- Command injection via skill parameters
35-
- Audit log tampering
36-
- Path traversal in data directory operations
33+
- Authentication or authorization bypass in network mode
34+
- Policy or confirmation gate bypass
35+
- SSRF or private-network access through discovery or replay
36+
- Credential leakage, token exposure, or cookie isolation failures
37+
- Command injection, path traversal, or unsafe local file access
38+
- Audit-log tampering or integrity bypass
3739

3840
### Out of Scope
3941

40-
- Denial of service (Schrute is a local tool)
41-
- Issues requiring physical access
4242
- Social engineering
43-
- Issues in dependencies (report upstream)
43+
- Vulnerabilities that depend on physical access to the machine
44+
- Issues only affecting third-party dependencies without a Schrute-specific exploit path
45+
- Pure availability issues on a local-only deployment with no confidentiality or integrity impact
4446

45-
## Security Architecture
47+
## Security Model At A Glance
4648

47-
Schrute's security model is documented in `CLAUDE.md`. Key protections:
49+
Schrute is designed to fail closed. Important protections in the codebase include:
4850

49-
- **9 policy gates** on every skill execution
50-
- **Fail-closed auth** for network mode (HTTP transport)
51-
- **HMAC-chained audit log** for tamper detection
52-
- **Timing-safe token comparison** to prevent timing attacks
53-
- **Domain allowlists** per site
54-
- **SSRF prevention** blocking private IP targets
55-
- **One-time confirmation** required for all new skills
56-
- **Credential isolation** — auth tokens never persist to config files
51+
- Policy checks around skill execution and browser-backed actions
52+
- Domain allowlists and request-shaping controls
53+
- SSRF protections, including private-IP blocking and redirect validation
54+
- Confirmation requirements for sensitive or newly learned actions
55+
- Audit logging and redaction for execution visibility
56+
- Timing-safe token verification for authenticated HTTP access
57+
- Separation of stored site data from runtime credentials where possible

‎package.json‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@
107107
"NOTICE",
108108
"CONTRIBUTING.md",
109109
"SECURITY.md",
110-
"CLAUDE.md",
111-
"AGENTS.md",
112110
"scripts/sync-version.js"
113111
]
114112
}

0 commit comments

Comments
 (0)