{"id":50767788,"url":"https://github.com/ysknsid25/sashiko-js","last_synced_at":"2026-06-11T15:02:44.103Z","repository":{"id":363500293,"uuid":"1187700011","full_name":"ysknsid25/sashiko-js","owner":"ysknsid25","description":"Fork from sashiko. This is customized for JavaScript/TypeScript analytics.If you would like to give a star, please do so to Sashiko, the original creator of this fork.","archived":false,"fork":false,"pushed_at":"2026-03-21T03:33:38.000Z","size":2853,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-09T07:35:11.998Z","etag":null,"topics":["2026","works"],"latest_commit_sha":null,"homepage":"https://github.com/sashiko-dev/sashiko","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ysknsid25.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-21T03:26:01.000Z","updated_at":"2026-03-21T03:40:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ysknsid25/sashiko-js","commit_stats":null,"previous_names":["ysknsid25/sashiko-js"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ysknsid25/sashiko-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysknsid25%2Fsashiko-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysknsid25%2Fsashiko-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysknsid25%2Fsashiko-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysknsid25%2Fsashiko-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ysknsid25","download_url":"https://codeload.github.com/ysknsid25/sashiko-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysknsid25%2Fsashiko-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34204205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2026","works"],"created_at":"2026-06-11T15:02:43.203Z","updated_at":"2026-06-11T15:02:44.093Z","avatar_url":"https://github.com/ysknsid25.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sashiko JS\n\n\u003e **Sashiko JS** is a fork of [Sashiko](https://github.com/rgushchin/sashiko), an agentic Linux kernel code review system. While the original Sashiko focuses exclusively on Linux kernel patch review, Sashiko JS adapts the same multi-stage AI review architecture for **JavaScript and TypeScript libraries**.\n\nSashiko JS uses LLM-powered multi-stage review to find bugs in JavaScript/TypeScript code. It can analyze commits from any git repository and supports multiple LLM providers (Gemini and Claude).\n\n## Relationship to Sashiko\n\nThis project is a derivative work of **[Sashiko](https://github.com/rgushchin/sashiko)** by Roman Gushchin and contributors, originally developed under the Linux Foundation. The core review infrastructure (AI orchestration, git operations, database, web UI, CLI) comes directly from Sashiko. Sashiko JS modifies the review prompts, stage descriptions, and configuration to target JavaScript/TypeScript instead of C/Linux kernel code.\n\nKey changes from the original Sashiko:\n\n- **Configurable prompt directory** (`review.prompts_dir`) to switch between review domains\n- **JS/TS-specific 9-stage review protocol** covering type safety, async patterns, security, and API design\n- **Library-specific subsystem guides** (e.g., Valibot, npm packaging, testing patterns)\n- **Stage descriptions loaded from files** rather than hardcoded, enabling domain-agnostic review\n- **Configurable repository path** via CLI (`--repo`) or environment variable\n\n## Review Stages\n\nSashiko JS uses a multi-stage review protocol adapted for JavaScript/TypeScript:\n\n1. **Stage 1: Analyze commit goal.** API design flaws, breaking changes, backwards compatibility.\n2. **Stage 2: Implementation verification.** Commit message vs code, missing exports, incomplete implementations.\n3. **Stage 3: Execution flow verification.** Logic errors, null/undefined dereferences, type narrowing, truthiness bugs.\n4. **Stage 4: Resource management.** Memory leaks, event listener cleanup, stream handling, timer leaks.\n5. **Stage 5: Async patterns and concurrency.** Unhandled rejections, race conditions, missing await, stale closures.\n6. **Stage 6: Security audit.** Prototype pollution, ReDoS, injection, type confusion, validation bypass.\n7. **Stage 7: Type system and API surface.** Generic correctness, conditional types, inference, tree-shaking.\n8. **Stage 8: Verification and severity estimation.** Consolidates findings, eliminates false positives.\n9. **Stage 9: Report generation.** Converts findings into constructive review comments.\n\n## Features\n\n- **Multi-stage AI review**: 9 specialized review perspectives for thorough analysis\n- **Multiple LLM providers**: Gemini and Claude are supported\n- **Library-specific knowledge**: Subsystem guides for Valibot, npm packaging, testing, and more\n- **Web interface and CLI**: Browse reviews in the browser or use the CLI\n- **Extensible**: Add new library guides by dropping markdown files into the subsystem directory\n\n## Prerequisites\n\n- **Rust**: Nightly toolchain (the project uses `edition = \"2024\"` features)\n- **Git**: For managing the target repository\n- **LLM API Key**: Gemini (`GEMINI_API_KEY` or `LLM_API_KEY`) or Claude (`ANTHROPIC_API_KEY`)\n\n## Setup\n\n1. **Clone the repository**:\n    ```bash\n    git clone https://github.com/yourname/sashiko-js.git\n    cd sashiko-js\n    ```\n\n2. **Configure** `Settings.toml`:\n    ```toml\n    [ai]\n    provider = \"gemini\"\n    model = \"gemini-3.1-pro-preview\"\n\n    [git]\n    repository_path = \"/path/to/target/repo\"\n\n    [review]\n    prompts_dir = \"third_party/prompts/javascript\"\n    ```\n\n3. **Set your API key**:\n    ```bash\n    export LLM_API_KEY=\"your_api_key_here\"\n    ```\n\n4. **Build**:\n    ```bash\n    cargo +nightly build --release\n    ```\n\n## Usage\n\n### Reviewing a specific repository\n\nYou can point Sashiko JS at any JavaScript/TypeScript git repository:\n\n```bash\n# Via Settings.toml\n[git]\nrepository_path = \"/path/to/your/library\"\n\n# Via environment variable\nSASHIKO__GIT__REPOSITORY_PATH=/path/to/your/library cargo run\n\n# Via CLI argument (review binary)\nreview --repo /path/to/your/library --baseline HEAD\n```\n\n### CLI\n\n```bash\ncargo run --bin sashiko-cli -- [COMMAND]\n```\n\n- **`submit [INPUT]`**: Submit a commit or range for review (e.g., `HEAD`, `HEAD~3..HEAD`)\n- **`status`**: Show server status and queue statistics\n- **`list [FILTER]`**: List recent reviews\n- **`show [ID]`**: Show detailed review results\n\n### Web Interface\n\nStart the daemon with `cargo run` and access the web UI at the URL printed to the console.\n\n## Adding Support for a New Library\n\n1. Create a subsystem guide in `third_party/prompts/javascript/subsystem/`:\n    ```markdown\n    # MyLibrary - Description\n\n    ## Architecture\n    ...\n\n    ## Common Bug Patterns\n    ...\n    ```\n\n2. Add an entry to `subsystem/subsystem.md`:\n    ```markdown\n    - **mylibrary.md**: Description of when to select this guide.\n    ```\n\nThat's it. The Phase 0 pre-screening will automatically select relevant guides based on the code being reviewed.\n\n## Project Structure\n\n```\nthird_party/prompts/\n  kernel/          # Original Linux kernel prompts (from upstream Sashiko)\n  javascript/      # JS/TS prompts (added by this fork)\n    identity.md           # System identity for the reviewer\n    stage-{1..9}.md       # Stage descriptions\n    technical-patterns.md # JS/TS-specific patterns and anti-patterns\n    false-positive-guide.md\n    severity.md\n    callstack.md\n    type-guards.md\n    inline-template.md    # Report formatting template\n    subsystem/\n      subsystem.md        # Index of available guides\n      valibot.md          # Valibot-specific guide\n      npm-package.md      # npm packaging conventions\n      testing.md          # Testing patterns\n```\n\n## Important Disclaimers\n\n### Data Privacy\nSashiko JS sends code from your repository to the configured LLM provider. Ensure you are authorized and comfortable sharing this code with a third-party service.\n\n### Operational Costs\nAI-powered review incurs API costs. Monitor your token usage and billing. The authors are not responsible for any charges incurred.\n\n## License\n\nThis project is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.\n\nThis is a derivative work of [Sashiko](https://github.com/rgushchin/sashiko), originally developed by Roman Gushchin and contributors under the Linux Foundation. The original work is also licensed under the Apache License, Version 2.0. See [NOTICE](NOTICE) for attribution details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fysknsid25%2Fsashiko-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fysknsid25%2Fsashiko-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fysknsid25%2Fsashiko-js/lists"}