
coding-style
by adamjosefus
Simple, immutable, clonable, and effect-based HTTP fetching.
SKILL.md
name: coding-style description: Guidelines for formatting TypeScript code in the fx-fetch package.
Format Skill
This skill should be used only for library code, test code, and code snippets in JSDoc.
Target Files: packages/fx-fetch/**/*.ts
When to use: Use this skill after writing or modifying TypeScript code in the fx-fetch package to ensure it follows project style guidelines.
Workflow
- Run
pnpm fmt:writeto apply automatic formatting - Apply the manual style guidelines from this skill
- Run
pnpm fmt:writeagain to ensure formatting is correct - Verify changes by running
pnpm validateandpnpm test
This skill can operate in three modes: library code, test code, and JSDoc code snippets.
Common Guidelines
- Always use single quotes for strings. Use template literals when interpolation is needed.
- Wrap switch cases in curly braces.
- Use trailing commas in multi-line object and array literals.
- Keep blank line after import statements.
- Keep blank line after if/else blocks.
- Use explicit return types for top-level functions and methods. This rule can be relaxed for small inline functions.
- Prefer immutable data structures and avoid mutating function parameters.
After all changes, run pnpm fmt:write to ensure formatting is correct.
Also run pnpm validate and pnpm test to verify no issues were introduced.
Library Code
Use common guidelines plus the following:
Take care about verbatimModuleSyntax option in tsconfig.json. Take care about best tree-shaking practices. Import only what is necessary.
- If we import a type from a
effectpackage, we should import it from its specific module path instead of the root package to ensure better tree shaking. (e.g.,import { type Effect } from 'effect/Effect';) - If we import functions with same name from different modules, we should alias them to avoid naming conflicts. (e.g.,
import { map as effectMap } from 'effect/Effect';) - Avoid using
import * assyntax to prevent importing unnecessary code. Only exception is when importing file "localThis.ts" as module namespace. (e.g.,import * as localThis from './localThis';) - Remove any unused imports to keep the code clean.
Test Code
Use common guidelines plus the following:
- Use
describeblocks to group related tests together. - Use
itblocks for individual test cases. - Use simple test names that clearly describe the behavior being tested. Do not be too generic and verbose.
- Make small tests that focus on a single behavior or scenario.
- Make small amount of test data needed for the test.
- Test edge cases and error scenarios.
- Test types using
expectTypeOffromvitestlibrary. - Use verbose variable and function names to improve readability.
- Import library code functions from root file instead of specific module paths to ensure testing the public API.
- Import EffectTS stuff from root package paths instead of specific module paths to ensure testing the public API. (e.g.,
import { Effect, Option, Either } from 'effect';)
JSDoc and JSDoc Code Snippets
Use common guidelines plus the following:
- We want to use only following JSDoc tags:
@since,@example,@category,@see,@link,@internaland@deprecated. - The JSDoc tags
@since,@category, and@exampleshould always be present in public API documentation. Other tags can be used as needed. - Ensure that code snippets in JSDoc comments are properly formatted and follow the same guidelines as library code.
- Ensure that code snippets are relevant to the surrounding documentation and accurately illustrate the concepts being discussed.
- Ensure that code snippets are complete and can be understood in isolation.
- Use triple backticks (```) to denote code blocks in JSDoc comments.
- Specify the language for code blocks in JSDoc comments (e.g., ```ts for TypeScript code).
- Avoid using overly complex code snippets that may confuse readers.
- Use "ASCII" arrows for describing focused types in JSDoc examples. Use characters
◀︎ ▶︎ ▲ ▼ ┌ ┐ └ ┘ ─ │to draw boxes around focused types in JSDoc examples. - Make sure to have same JSDoc comments for overloaded functions. (e.g., Dual APIs functions)
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です



