{"id":17659407,"url":"https://github.com/tscpp/knuckles","last_synced_at":"2026-03-02T05:32:15.585Z","repository":{"id":238571711,"uuid":"796810776","full_name":"tscpp/knuckles","owner":"tscpp","description":"Modern development toolkit for Knockout 👊","archived":false,"fork":false,"pushed_at":"2024-07-05T18:03:21.000Z","size":1768,"stargazers_count":1,"open_issues_count":32,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-24T16:40:03.451Z","etag":null,"topics":["eslint","knockout","knockout-lint","knockout-ssr","knockoutjs","toolchain","toolkit","typescript","vscode-knockout-binding-support"],"latest_commit_sha":null,"homepage":"https://knuckles.elsk.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tscpp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"tscpp","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2024-05-06T17:12:42.000Z","updated_at":"2024-07-05T17:17:07.000Z","dependencies_parsed_at":"2024-05-16T02:26:17.650Z","dependency_job_id":"d9d14442-66fb-432f-af59-2151f7ed3369","html_url":"https://github.com/tscpp/knuckles","commit_stats":{"total_commits":218,"total_committers":3,"mean_commits":72.66666666666667,"dds":"0.14678899082568808","last_synced_commit":"0781b384f3981526849169154f428d05b2b11775"},"previous_names":["tscpp/knuckles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tscpp/knuckles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tscpp%2Fknuckles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tscpp%2Fknuckles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tscpp%2Fknuckles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tscpp%2Fknuckles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tscpp","download_url":"https://codeload.github.com/tscpp/knuckles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tscpp%2Fknuckles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29993376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"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":["eslint","knockout","knockout-lint","knockout-ssr","knockoutjs","toolchain","toolkit","typescript","vscode-knockout-binding-support"],"created_at":"2024-10-23T16:06:58.701Z","updated_at":"2026-03-02T05:32:15.536Z","avatar_url":"https://github.com/tscpp.png","language":"TypeScript","funding_links":["https://github.com/sponsors/tscpp"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![Knuckles: Development Toolkit for Knockout.js](./assets/knuckles-banner.svg)](https://knuckles.elsk.dev)\n\n[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/tscpp/knuckles/checks.yml?style=for-the-badge\u0026logo=github\u0026label=checks)](https://github.com/tscpp/knuckles/actions/workflows/checks.yml)\n[![Coveralls](https://img.shields.io/coverallsCoverage/github/tscpp/knuckles?style=for-the-badge)](https://coveralls.io/github/tscpp/knuckles)\n[![GitHub License](https://img.shields.io/github/license/tscpp/knuckles?style=for-the-badge)](https://github.com/tscpp/knuckles?tab=MIT-1-ov-file#readme)\n[![NPM Downloads](https://img.shields.io/npm/dm/%40knuckles%2Fcli?style=for-the-badge\u0026logo=npm)](https://www.npmjs.com/package/@knuckles/cli)\n\n\u003c/div\u003e\n\n\u003c!-- @include: ./docs/parts/intro.md --\u003e\n\n## What is Knuckles?\n\nKnuckles is a development toolkit designed to enhance the developer experience (DX) using Knockout.js. It offers a range of useful tools for analyzing and optimizing Knockout.js applications. Each tool is entirely standalone and can be used independently. [See website ›](https://knuckles.elsk.dev/)\n\n\u003e No knockout without knuckles! 👊\n\n## Features\n\n### Analyzer\n\nThe analyzer allows you to check for issues in Knockout views before production. It allows you to utilize external tools, such as [TypeScript](#typescript) and [ESLint](#eslint), to check the bindings, while also providing a set of useful rules to catch common misstakes. [Read more ›](https://knuckles.elsk.dev/docs/analyzer/overview)\n\n### TypeScript\n\nAs a plugin to the [analyzer](#analyzer), it can type-check the bindings in your Knockout views and provides a generated snapshot which other tools can use to provide type-aware analysis. [Read more ›](https://knuckles.elsk.dev/docs/analyzer/typescript)\n\n### ESLint\n\nAs a plugin to the [analyzer](#analyzer), it can lint bindings using existing rules for JavaScript and [TypeScript](#typescript) (with type-aware rules). [Read more ›](https://knuckles.elsk.dev/docs/analyzer/eslint)\n\n### SSR\n\nServer-side rendering (SSR) allows you to render data into the view before handing it to the client to render. This can be used to greatly optimize runtime performance and SEO. [Read more ›](https://knuckles.elsk.dev/docs/ssr/overview)\n\n### Editor Support\n\nImplementaion currently only exists for [VSCode](/packages/readme/vscode).\n\nThe [language server](/packages/readme/language-server) provides language features to Knockout views, such as \"go to definition\", highlighting, diagnostics (from [analyzer](#analyzer)).\n\n\u003c!-- /include --\u003e\n\n## License\n\nAll source code is licensed under the [MIT](https://choosealicense.com/licenses/mit/) license.\n\n## Versioning\n\nVerions adhear to [Semantic Versioning](https://semver.org/) (SemVer) v2.0.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftscpp%2Fknuckles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftscpp%2Fknuckles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftscpp%2Fknuckles/lists"}