{"owner":"typelevel","repo":"cats","hasSkills":true,"totalSkillsCount":1,"totalTokensCount":492,"categories":["project-spec"],"hasMcp":false,"mcpConfig":null,"found":["DESIGN.md"],"skills":{"DESIGN.md":"# Design\n\nThe goal is to provide a lightweight, modular, and extensible library\nthat is approachable and powerful. We will also provide useful\ndocumentation and examples which are type-checked by the compiler to\nensure correctness.\n\nCats will be designed to use modern *best practices*:\n\n * [machinist](https://github.com/typelevel/machinist) for optimizing implicit operators\n * [scalacheck](http://scalacheck.org) for property-based testing\n * [discipline](https://github.com/typelevel/discipline) for encoding and testing laws\n * [kind-projector](https://github.com/typelevel/kind-projector) for type lambda syntax\n * [algebra](https://github.com/non/algebra) for shared algebraic structures\n * ...and of course a pure functional subset of the Scala language.\n\n(We also plan to support [Miniboxing](http://scala-miniboxing.org) in a branch.)\n\nCurrently Cats is experimenting with providing laziness via a type\nconstructor (`Eval[_]`), rather than via ad-hoc by-name\nparameters. This design may change if it ends up being impractical.\n\nThe goal is to make Cats as efficient as possible for both strict and\nlazy evaluation. There are also issues around by-name parameters that\nmean they are not well-suited to all situations where laziness is\ndesirable.\n\n### Modules\n\nCats will be split into modules, both to keep the size of the\nartifacts down and also to avoid unnecessarily tight coupling between\ntype classes and data types.\n\nCats provides the following modules:\n\n * `core`: Definitions for widely-used type classes and data types.\n * `laws`: The encoded laws for type classes defined in `core`, exported to assist third-party testing.\n * `kernel`: Definitions for the basic algebraic type classes\n * `kernel-laws`: The encoded laws for type classes defined in `kernel`, exported to assist third-party testing.\n * `free`: Free structures such as the free monad, and supporting type classes.\n * `tests`: Verifies the laws, and runs any other tests. Not published.\n * `bench`: Benchmarking suites. Not published.\n\nAs the type class families grow, it's possible that additional modules\nwill be added as well. Modules which depend on other libraries\n(e.g. Shapeless-based type class derivation) may be added as well.\n"},"files":{"DESIGN.md":"# Design\n\nThe goal is to provide a lightweight, modular, and extensible library\nthat is approachable and powerful. We will also provide useful\ndocumentation and examples which are type-checked by the compiler to\nensure correctness.\n\nCats will be designed to use modern *best practices*:\n\n * [machinist](https://github.com/typelevel/machinist) for optimizing implicit operators\n * [scalacheck](http://scalacheck.org) for property-based testing\n * [discipline](https://github.com/typelevel/discipline) for encoding and testing laws\n * [kind-projector](https://github.com/typelevel/kind-projector) for type lambda syntax\n * [algebra](https://github.com/non/algebra) for shared algebraic structures\n * ...and of course a pure functional subset of the Scala language.\n\n(We also plan to support [Miniboxing](http://scala-miniboxing.org) in a branch.)\n\nCurrently Cats is experimenting with providing laziness via a type\nconstructor (`Eval[_]`), rather than via ad-hoc by-name\nparameters. This design may change if it ends up being impractical.\n\nThe goal is to make Cats as efficient as possible for both strict and\nlazy evaluation. There are also issues around by-name parameters that\nmean they are not well-suited to all situations where laziness is\ndesirable.\n\n### Modules\n\nCats will be split into modules, both to keep the size of the\nartifacts down and also to avoid unnecessarily tight coupling between\ntype classes and data types.\n\nCats provides the following modules:\n\n * `core`: Definitions for widely-used type classes and data types.\n * `laws`: The encoded laws for type classes defined in `core`, exported to assist third-party testing.\n * `kernel`: Definitions for the basic algebraic type classes\n * `kernel-laws`: The encoded laws for type classes defined in `kernel`, exported to assist third-party testing.\n * `free`: Free structures such as the free monad, and supporting type classes.\n * `tests`: Verifies the laws, and runs any other tests. Not published.\n * `bench`: Benchmarking suites. Not published.\n\nAs the type class families grow, it's possible that additional modules\nwill be added as well. Modules which depend on other libraries\n(e.g. Shapeless-based type class derivation) may be added as well.\n"},"items":[{"name":"DESIGN.md","path":"DESIGN.md","rawUrl":"https://raw.githubusercontent.com/typelevel/cats/HEAD/DESIGN.md","title":"UI Design System & Style Tokens","category":"project-spec","format":"markdown","content":"# Design\n\nThe goal is to provide a lightweight, modular, and extensible library\nthat is approachable and powerful. We will also provide useful\ndocumentation and examples which are type-checked by the compiler to\nensure correctness.\n\nCats will be designed to use modern *best practices*:\n\n * [machinist](https://github.com/typelevel/machinist) for optimizing implicit operators\n * [scalacheck](http://scalacheck.org) for property-based testing\n * [discipline](https://github.com/typelevel/discipline) for encoding and testing laws\n * [kind-projector](https://github.com/typelevel/kind-projector) for type lambda syntax\n * [algebra](https://github.com/non/algebra) for shared algebraic structures\n * ...and of course a pure functional subset of the Scala language.\n\n(We also plan to support [Miniboxing](http://scala-miniboxing.org) in a branch.)\n\nCurrently Cats is experimenting with providing laziness via a type\nconstructor (`Eval[_]`), rather than via ad-hoc by-name\nparameters. This design may change if it ends up being impractical.\n\nThe goal is to make Cats as efficient as possible for both strict and\nlazy evaluation. There are also issues around by-name parameters that\nmean they are not well-suited to all situations where laziness is\ndesirable.\n\n### Modules\n\nCats will be split into modules, both to keep the size of the\nartifacts down and also to avoid unnecessarily tight coupling between\ntype classes and data types.\n\nCats provides the following modules:\n\n * `core`: Definitions for widely-used type classes and data types.\n * `laws`: The encoded laws for type classes defined in `core`, exported to assist third-party testing.\n * `kernel`: Definitions for the basic algebraic type classes\n * `kernel-laws`: The encoded laws for type classes defined in `kernel`, exported to assist third-party testing.\n * `free`: Free structures such as the free monad, and supporting type classes.\n * `tests`: Verifies the laws, and runs any other tests. Not published.\n * `bench`: Benchmarking suites. Not published.\n\nAs the type class families grow, it's possible that additional modules\nwill be added as well. Modules which depend on other libraries\n(e.g. Shapeless-based type class derivation) may be added as well.\n","isInternal":false,"tokens":492,"sizeBytes":2218}],"systemPromptSnippet":"<yakaai_skills repo=\"typelevel/cats\">\n<!-- File: DESIGN.md (Tokens: ~492 | Category: project-spec) -->\n# Design\n\nThe goal is to provide a lightweight, modular, and extensible library\nthat is approachable and powerful. We will also provide useful\ndocumentation and examples which are type-checked by the compiler to\nensure correctness.\n\nCats will be designed to use modern *best practices*:\n\n * [machinist](https://github.com/typelevel/machinist) for optimizing implicit operators\n * [scalacheck](http://scalacheck.org) for property-based testing\n * [discipline](https://github.com/typelevel/discipline) for encoding and testing laws\n * [kind-projector](https://github.com/typelevel/kind-projector) for type lambda syntax\n * [algebra](https://github.com/non/algebra) for shared algebraic structures\n * ...and of course a pure functional subset of the Scala language.\n\n(We also plan to support [Miniboxing](http://scala-miniboxing.org) in a branch.)\n\nCurrently Cats is experimenting with providing laziness via a type\nconstructor (`Eval[_]`), rather than via ad-hoc by-name\nparameters. This design may change if it ends up being impractical.\n\nThe goal is to make Cats as efficient as possible for both strict and\nlazy evaluation. There are also issues around by-name parameters that\nmean they are not well-suited to all situations where laziness is\ndesirable.\n\n### Modules\n\nCats will be split into modules, both to keep the size of the\nartifacts down and also to avoid unnecessarily tight coupling between\ntype classes and data types.\n\nCats provides the following modules:\n\n * `core`: Definitions for widely-used type classes and data types.\n * `laws`: The encoded laws for type classes defined in `core`, exported to assist third-party testing.\n * `kernel`: Definitions for the basic algebraic type classes\n * `kernel-laws`: The encoded laws for type classes defined in `kernel`, exported to assist third-party testing.\n * `free`: Free structures such as the free monad, and supporting type classes.\n * `tests`: Verifies the laws, and runs any other tests. Not published.\n * `bench`: Benchmarking suites. Not published.\n\nAs the type class families grow, it's possible that additional modules\nwill be added as well. Modules which depend on other libraries\n(e.g. Shapeless-based type class derivation) may be added as well.\n</yakaai_skills>"}