Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Bug Report
description: Something is broken or behaving unexpectedly.
labels: ["bug", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to report a bug. Please fill in as much detail as you can.
- type: input
id: version
attributes:
label: React-Sentinel version
description: Output of `npx @edgarbrunet/react-sentinel --version` or the version in your `package.json`.
placeholder: "0.1.0"
validations:
required: true
- type: input
id: node
attributes:
label: Node.js version
description: Output of `node --version`.
placeholder: "v20.x.x"
validations:
required: true
- type: input
id: client
attributes:
label: AI client / IDE
description: Claude Code, Cursor, GitHub Copilot, etc.
placeholder: "Claude Code 1.x"
validations:
required: true
- type: textarea
id: description
attributes:
label: What happened?
description: A clear and concise description of the bug.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Run `node dist/index.js mcp --headless`
2. Call tool `navigate_replay` with URL …
3. Observe …
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What should have happened?
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant logs or error output
description: Paste stderr output or stack traces here. Wrap in triple-backtick code blocks.
render: text
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Feature Request
description: Suggest a new capability or improvement.
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Before submitting, check open issues and the [docs/](../docs/) folder to see if the feature is already being tracked or documented.
- type: textarea
id: problem
attributes:
label: Problem or motivation
description: What problem does this solve? What is currently painful or impossible?
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed solution
description: Describe what you would like to see. Pseudocode, tool names, or UX descriptions are all helpful.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What workarounds have you tried? Why are they insufficient?
- type: dropdown
id: impact
attributes:
label: Who benefits?
options:
- AI agent users (tool consumers)
- IDE / MCP client integrators
- Contributors / maintainers
- All of the above
validations:
required: true
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/good_first_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Good First Issue
description: A clearly scoped task suitable for new contributors.
labels: ["good first issue", "help wanted"]
body:
- type: markdown
attributes:
value: |
Use this template to propose a task that a new contributor could pick up with minimal context.
Keep the scope as small and self-contained as possible.
- type: textarea
id: task
attributes:
label: Task description
description: What exactly needs to be done? Be precise — include file paths, function names, or test commands when applicable.
validations:
required: true
- type: textarea
id: why
attributes:
label: Why it matters
description: Brief rationale — what does completing this improve?
validations:
required: true
- type: textarea
id: hints
attributes:
label: Hints and starting points
description: Pointers to relevant files, docs, or functions. Include the commands needed to validate the change.
validations:
required: true
- type: input
id: estimate
attributes:
label: Effort estimate
description: Rough estimate (e.g., "1–2 hours", "half a day").
placeholder: "1–2 hours"
31 changes: 31 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
## Summary

<!-- One sentence describing what this PR does. -->

## Motivation

<!-- Why is this change needed? Link to the relevant issue(s) if applicable. Closes #___ -->

## Changes

<!-- Bullet list of what changed. Be specific: file names, function names, new behaviour. -->

-

## Validation

<!-- How did you verify this works? Check all that apply and add details below. -->

- [ ] `npm run check` passes (TypeScript strict type-check)
- [ ] `npm run build` succeeds
- [ ] `cd examples/test-app && npm run build` succeeds
- [ ] Manual smoke test against a running React app (describe below)
- [ ] E2E script: `npm run e2e:smoke` (requires a running test-app)

```
# paste relevant output here
```

## Notes for reviewers

<!-- Anything the reviewer should pay special attention to, design trade-offs, or follow-up tasks. -->
30 changes: 30 additions & 0 deletions .github/labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
- name: bug
color: d73a4a
description: Something is not working as expected
- name: enhancement
color: a2eeef
description: New feature or improvement request
- name: good first issue
color: 7057ff
description: Easy entry point for new contributors
- name: help wanted
color: 008672
description: Maintainer is actively seeking contributions
- name: needs-triage
color: e4e669
description: Not yet reviewed by a maintainer
- name: documentation
color: 0075ca
description: Improvements or additions to documentation
- name: dependencies
color: 0366d6
description: Pull requests that update a dependency
- name: ci
color: bfd4f2
description: Related to the CI/CD pipeline
- name: agent-pack
color: f9d0c4
description: Agent Pack CLI feature area
- name: mcp-protocol
color: c5def5
description: MCP server core or tool definitions
42 changes: 42 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: CI

on:
push:
branches: ["main", "sprint/**"]
pull_request:
branches: ["main"]

jobs:
build:
name: Type-check & build
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20, 22]

steps:
- uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"

- name: Install root dependencies
run: npm ci

- name: Type-check
run: npm run check

- name: Build library
run: npm run build

- name: Install test-app dependencies
working-directory: examples/test-app
run: npm install

- name: Build test-app
working-directory: examples/test-app
run: npm run build
30 changes: 30 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Code of Conduct

## Our pledge

We are committed to making participation in this project a welcoming and respectful experience for everyone, regardless of age, background, gender identity, sexual orientation, disability, ethnicity, or level of experience.

## Our standards

**Expected behavior:**

- Use welcoming and inclusive language.
- Respect differing viewpoints and experiences.
- Accept constructive feedback gracefully.
- Focus on what is best for the community.

**Unacceptable behavior:**

- Harassment, insults, or derogatory comments in any form.
- Publishing others' private information without permission.
- Conduct that would be considered inappropriate in a professional setting.

## Enforcement

Instances of unacceptable behavior may be reported by contacting the project maintainer via the email address on the npm package page or through GitHub's private reporting tools. All complaints will be reviewed and investigated promptly.

The project maintainer has the right to remove, edit, or reject contributions that do not align with this Code of Conduct, and may temporarily or permanently ban contributors for other behaviors deemed inappropriate.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
74 changes: 74 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Contributing to React-Sentinel

Thank you for your interest in React-Sentinel! This guide covers how to set up the project locally, propose changes, and get feedback.

## Prerequisites

- **Node.js ≥ 20** (enforced by `engines` in `package.json`)
- **npm** or **pnpm** (pnpm workspace is configured; npm works for the root package)
- A Chromium-compatible browser (Playwright installs its own)

## Local setup

```bash
git clone https://github.com/edgarbnt/ReactSentinel.git
cd ReactSentinel
npm install
npm run build
```

Verify the build:

```bash
npm run check # TypeScript strict type-check
npm run build # compile src/ → dist/
cd examples/test-app && npm run build # compile the demo app
```

## Project layout

| Path | What it contains |
|---|---|
| `src/` | TypeScript source for the MCP server |
| `dist/` | Compiled output (committed for consumption as a local checkout) |
| `assets/agent-pack/` | Markdown guidance assets bundled by the CLI |
| `examples/test-app/` | Minimal Vite/React app used as the E2E fixture |
| `scripts/` | E2E smoke and diagnostic helpers |
| `docs/` | Product, workflow, and sprint documentation |
| `.github/` | CI workflows and issue/PR templates |

## Making a change

1. **Fork** the repository and create a topic branch from `main`.
2. Keep changes **focused**: one logical concern per pull request.
3. Run `npm run check && npm run build` before pushing.
4. Describe the change clearly in the PR body using the provided template.

## Commit style

Follow the [Conventional Commits](https://www.conventionalcommits.org/) prefix pattern:

```
feat: short description
fix: short description
docs: short description
chore: short description
```

Include the relevant Jira/issue ID when applicable (e.g., `fix: [SCRUM-355] add CI workflow`).

## Reporting issues

Use the GitHub issue templates:

- **Bug report** — unexpected runtime behavior or crashes.
- **Feature request** — ideas for new capabilities.
- **Good first issue** — clearly scoped tasks suitable for new contributors (labeled `good first issue`).

## Security

Please do **not** open a public issue for security vulnerabilities. See [SECURITY.md](SECURITY.md) for the responsible disclosure process.

## License

By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE) that covers this project.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Edgar Brunet

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading
Loading