Contributing
Thank you for your interest in improving notMyShell. NMSh is an open-source terminal frontend, and development happens entirely on GitHub.
Project Structure
Section titled “Project Structure”src/: The core TypeScript application (UI, PTY orchestration, semantic parser, configuration).site/: The Astro/Starlight documentation website (where you are now).tests/: Automated test suite asserting correctness and observability.assets/: Official branding, vectors, and design lockups.docs/: In-repository architecture and design decision records.
Branching Strategy
Section titled “Branching Strategy”master: The stable branch, representing the latest released version of NMSh. Do not commit here unless resolving a critical hotfix for a stable release.dev: The active development branch. All feature PRs and bug fixes must targetdev.- Feature Branches: Should be created off
devand cleanly merge back into it.
Development Loop
Section titled “Development Loop”To work on NMSh locally:
- Clone the repository and checkout
dev. - Run
npm cito install dependencies. - Build the core application:
npm run build. - Launch your local build in development mode using
npm run startor./bin/nmsh.
Verification & Testing
Section titled “Verification & Testing”Do not hardcode test totals in documentation, as they change with every merge.
npm run verify:fast: Runs the build, a focused test subset, and diff checks. Ideal for rapid iteration.npm run verify: Runs the full canonical test suite and linter. Must pass before pushing.npm run verify:release: Includes benchmark script typechecking and bounded timing smoke tests. Used for release qualification.
Physical Terminal Validation
Section titled “Physical Terminal Validation”“All tests passed” is not equivalent to “human terminal validation passed.” Features involving visual geometry, PTY resizing, keyboard protocols (e.g., Kitty CSI u), or system integration must be physically verified in terminal hosts (Ghostty, Terminal.app, iTerm2, etc.) before closure.
Documentation Website
Section titled “Documentation Website”The documentation website lives in the site/ directory and is built with Astro and Starlight.
- No existing screenshots: Do not embed legacy screenshots or generated AI UI mockups. Use only official vector branding (
assets/brand/nmsh-lockup.svg,assets/readme/vespyr-divider.svg). - Feature Provenance: Use the
<Availability />component to distinctly mark features that arereleased,unreleased(on the dev branch),in-progress, orplanned. - Local Docs Dev:
Terminal window cd sitenpm installnpm run dev
Automated Contribution Guidelines
Section titled “Automated Contribution Guidelines”When running automated development tools or contributor workflows:
- Read
AGENTS.mdfirst. It contains standing authorization, strict constraints on project boards, and workflow rules. - Do not commit directly to
master. - Do not falsely claim human validation has occurred. Leave issues requiring manual terminal verification open with a “Needs Human Test” label.
- Commits, pull requests, and documentation must carry no model attribution, tool signatures, or co-author trailers.
Issue Tracking
Section titled “Issue Tracking”GitHub is the durable source of truth. Refer to the GitHub Issues and the ROADMAP before starting new work.