mirror of
https://github.com/srid/nixos-config.git
synced 2026-05-11 17:36:07 +08:00
add Haskell skill
This commit is contained in:
parent
578ae0580a
commit
82f431abf5
2 changed files with 61 additions and 0 deletions
|
|
@ -17,8 +17,22 @@ let
|
|||
(builtins.readFile (commandsDir + "/${fileName}"))
|
||||
)
|
||||
(builtins.readDir commandsDir);
|
||||
|
||||
skillsDir = ./skills;
|
||||
skillDirs = lib.filterAttrs (_: type: type == "directory") (builtins.readDir skillsDir);
|
||||
in
|
||||
{
|
||||
# Link skill directories to ~/.claude/skills/
|
||||
# (home-manager module doesn't support skills yet, so we link manually)
|
||||
home.file = lib.mapAttrs'
|
||||
(skillName: _:
|
||||
lib.nameValuePair ".claude/skills/${skillName}" {
|
||||
source = skillsDir + "/${skillName}";
|
||||
recursive = true;
|
||||
}
|
||||
)
|
||||
skillDirs;
|
||||
|
||||
home.packages = [
|
||||
pkgs.tree
|
||||
pkgs.python313Packages.markitdown
|
||||
|
|
|
|||
47
modules/home/claude-code/skills/haskell/SKILL.md
Normal file
47
modules/home/claude-code/skills/haskell/SKILL.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
name: haskell
|
||||
description: Expert Haskell development assistance. Use when working with Haskell code, .hs files, Cabal, ghcid, or when user mentions Haskell, functional programming, or type-level programming.
|
||||
---
|
||||
|
||||
# Haskell Development
|
||||
|
||||
Expert assistance for Haskell programming.
|
||||
|
||||
## Guidelines
|
||||
|
||||
**CRITICAL - Error Handling in Code**: NEVER write code that silently ignores errors:
|
||||
- Do NOT use `undefined` or `error` as placeholders
|
||||
- Do NOT skip handling error cases in pattern matches
|
||||
- Do NOT ignore `Maybe`/`Either` failure cases
|
||||
- Handle all possible cases explicitly
|
||||
- Use types to make impossible states unrepresentable
|
||||
|
||||
Every error case in generated code must be handled properly.
|
||||
|
||||
**Code Quality**:
|
||||
- Write type signatures for all top-level definitions
|
||||
- Write total functions (avoid `head`, `tail`, `!!`)
|
||||
- Prefer pure functions over IO when possible
|
||||
- Use explicit exports in modules
|
||||
- Leverage type system for safety
|
||||
- Favor composition over complex functions
|
||||
- Write Haddock documentation for public APIs
|
||||
|
||||
**Idiomatic Patterns**:
|
||||
- Prefer `Text` over `String`
|
||||
- Use `newtype` wrappers for domain types
|
||||
- Apply smart constructors for validation
|
||||
- Use lenses for record manipulation when appropriate
|
||||
- Use `Applicative` and `Monad` appropriately
|
||||
|
||||
## Testing
|
||||
|
||||
- Use QuickCheck for property-based testing
|
||||
- Use HUnit or Hspec for unit tests
|
||||
- Provide good examples in documentation
|
||||
|
||||
## Build instructions
|
||||
|
||||
As you make code changes, start a subagent in parallel to resolve any compile errors in `ghcid.log`.
|
||||
|
||||
**IMPORTANT**: Do not run build commands yourself. The human runs ghcid on the terminal, which then updates `ghcid.log` with any compile error or warning (if this file does not exist, or if ghcid has stopped, remind the human to address it). You should read `ghcid.log` (in _entirety_) after making code changes; this file updates near-instantly. Don't rely on VSCode diagnostics.
|
||||
Loading…
Add table
Add a link
Reference in a new issue